OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4087|回复: 4

外部中断问题进不去

[复制链接]

4

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2015-7-31
在线时间
0 小时
发表于 2015-9-23 21:53:37 | 显示全部楼层 |阅读模式
5金钱
     我这边设置了函数的外部中断,使用PD2 和PC12端口,使用的是寄存器模式的,但是不管怎么样,我这边总是进不去中断的,不知道什么原因,按键是按下低电平。请大家帮我看看。不是说配置外部中断需要配置AFIO寄存器吗?我在原子的例 程中也没有找到关于AFIO的设置的。
还有我在设置AFIO_EXTICRx时,系统提示..\HARDWARE\EXTI\exti.c(45): error:  #136: struct "<unnamed>" has no field "EXTICR1"不知道什么原因。求大神解答。

程序:#include "exti.h"
#include "led.h"
#include "key.h"
#include "delay.h"
#include "usart.h"
#include "lcd.h"
//////////////////////////////////////////////////////////////////////////////////  
//All rights reserved  
//////////////////////////////////////////////////////////////////////////////////  

u8 tt;
void EXTI2_IRQHandler(void)       
{
delay_ms(10);
if(KEY1==0) 
{
tt++;
  LCD_LED=1;
}  
EXTI->R=1<<2; 
}


void EXTI12_IRQHandler(void)
{
delay_ms(10);
if(KEY2==0) 
{
LED0=!LED0;
LED1=!LED1;
}  
EXTI->R=1<<12;  
}

//?????????????????ò
//??????PC12,PD2??????????.
void EXTIX_Init(void)
{
RCC->APB2ENR|=1<<4;     //????PORTC?±??
RCC->APB2ENR|=1<<5;     //????PROTD?±??
AFIO->EXTICR1&=0xf0ff;
AFIO->EXTICR1|=0x0300;   //????PD????
AFIO->EXTICR4&=0xfff0;   //????PC????
AFIO->EXTICR4|=0xfff2;


GPIOC->CRH&=0XFFF0FFFF;//PC12?è????????  
GPIOC->CRH|=0X00080000;   
GPIOD->CRL&=0XFFFFF0FF;//PD2 ?è????????  
GPIOD->CRL|=0X00000800;   
GPIOC->ODR|=1<<12;   //PC12 ?è????????
GPIOD->ODR|=1<<2;     //PD2  ?è????????

Ex_NVIC_Config(GPIO_C,12,FTIR);//????????·?
Ex_NVIC_Config(GPIO_D,2,FTIR);//????????·?

MY_NVIC_Init(2,3,EXTI2_IRQChannel,2);    //????7??×???????2??×é3
MY_NVIC_Init(2,2,EXTI15_10_IRQChannel,2);//????7??×???????1??×é3   
}

最佳答案

查看完整内容[请看2#楼]

回复【3楼】菜鸟小白: --------------------------------- 不要乱改, AFIO里面那个是一个数组 EXTICR[4],  不是EXTICR1,2,3,4, 当然编译报错 AFIO时钟开启在Ex_NVIC_Config();函数里 还有你这个EXTI2_IRQChannel和EXTI15_10_IRQChannel   现在用的是TIM2_IRQn和 EXTI15_10_IRQn
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5781
金钱
5781
注册时间
2013-11-22
在线时间
1212 小时
发表于 2015-9-23 21:53:38 | 显示全部楼层
回复【3楼】菜鸟小白:
---------------------------------
不要乱改, AFIO里面那个是一个数组 EXTICR[4],  不是EXTICR1,2,3,4, 当然编译报错
AFIO时钟开启在Ex_NVIC_Config();函数里
还有你这个EXTI2_IRQChannel和EXTI15_10_IRQChannel  
现在用的是TIM2_IRQn和 EXTI15_10_IRQn
回复

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5781
金钱
5781
注册时间
2013-11-22
在线时间
1212 小时
发表于 2015-9-23 22:28:36 | 显示全部楼层
参考下战舰的  外部中断实验
回复

使用道具 举报

4

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2015-7-31
在线时间
0 小时
 楼主| 发表于 2015-9-24 08:36:02 | 显示全部楼层
回复【2楼】lycreturn:
---------------------------------
我参考了的,就是在例程上面找不到配置AFIO模块,但是数据手册上说配置外部中断必须得开启AFIO时钟的。我在程序里面开启了,但是为什么提示显示unamed的,我也不知道什么原因的
回复

使用道具 举报

4

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2015-7-31
在线时间
0 小时
 楼主| 发表于 2015-9-25 16:01:56 | 显示全部楼层
回复【4楼】lycreturn:
---------------------------------
嗯嗯,后来知道了的,谢谢指点的,我进不去的原因是在程序其他的地方设置了PD口,导致中断出现问题的,现在解决的,谢谢你的指点哈
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-18 12:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表