OpenEdv-开源电子网

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

中断问题求解

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2017-8-13
在线时间
2 小时
发表于 2017-8-13 14:50:41 | 显示全部楼层 |阅读模式
1金钱
         KEY_Init();  //PA0,PE2,PE3,PE4
        /*RCC->APB2ENR|=1<<0;
       
        AFIO->EXTICR[0]&=0xFFFF00F0; //相应为复位
        AFIO->EXTICR[0]&=0xFFFF44F0;
       
        AFIO->EXTICR[1]&=0xFFFFFFF0;
  AFIO->EXTICR[1]&=0xFFFFFFF4;
        //触发沿
        EXTI->RTSR|=1<<0;
       
        EXTI->FTSR|=1<<2;
        EXTI->FTSR|=1<<3;
        EXTI->FTSR|=1<<4;
        //EXTI->PR &=0x00000000;
        //开放中断
        EXTI->IMR|=1<<0;
        EXTI->IMR|=1<<2;
        EXTI->IMR|=1<<3;
        EXTI->IMR|=1<<4;*/
        //不知道什么原因只能中断0,其他都不行

        Ex_NVIC_Config(GPIO_E,2,FTIR);         //下降沿触发
        Ex_NVIC_Config(GPIO_E,3,FTIR);         //下降沿触发
        Ex_NVIC_Config(GPIO_E,4,FTIR);          //原子哥实验代码
        MY_NVIC_Init(2,3,EXTI0_IRQn,2);        //抢占2,子优先级3,组2
        MY_NVIC_Init(2,2,EXTI2_IRQn,2);        //抢占2,子优先级2,组2          
        MY_NVIC_Init(2,1,EXTI3_IRQn,2);        //抢占2,子优先级1,组2          
        MY_NVIC_Init(2,0,EXTI4_IRQn,2);        //抢占2,子优先级0,组2         

用原子哥的实验代码替换:Ex_NVIC_Config(GPIO_E,2,FTIR);         //下降沿触发
                                  Ex_NVIC_Config(GPIO_E,3,FTIR);         //下降沿触发
                                 Ex_NVIC_Config(GPIO_E,4,FTIR);          
其他都没变化就可以实验,我自己编的寄存器中断就只能实验中断0,其他2,3,4都不行!小小萌新求助

最佳答案

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

我知道原因了,不是结构体问题,是我把这个写错了,应该是: AFIO->EXTICR[1]|=0x00000004;里面的&应该换成|的,尴尬!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2017-8-13
在线时间
2 小时
 楼主| 发表于 2017-8-13 14:50:42 | 显示全部楼层
烟酒不沾 发表于 2017-8-13 15:55
你看是不是你这个结构体的成员名不对啊EXTI->RTSR|=1

我知道原因了,不是结构体问题,是我把这个写错了,应该是: AFIO->EXTICR[1]|=0x00000004;里面的&应该换成|的,尴尬!
回复

使用道具 举报

13

主题

611

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1929
金钱
1929
注册时间
2014-10-6
在线时间
625 小时
发表于 2017-8-13 15:55:29 | 显示全部楼层
你看是不是你这个结构体的成员名不对啊EXTI->RTSR|=1<<0;
        EXTI->FTSR|=1<<2;
        EXTI->FTSR|=1<<3;
        EXTI->FTSR|=1<<4;;
      RTSR写成FTSR了!
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2017-8-13
在线时间
2 小时
 楼主| 发表于 2017-8-13 18:16:33 | 显示全部楼层
烟酒不沾 发表于 2017-8-13 15:55
你看是不是你这个结构体的成员名不对啊EXTI->RTSR|=1

typedef struct
{
  __IO uint32_t IMR;
  __IO uint32_t EMR;
  __IO uint32_t RTSR;
  __IO uint32_t FTSR;
  __IO uint32_t SWIER;
  __IO uint32_t PR;
} EXTI_TypeDef;
定义是这样,还是不懂啊,大神
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2016-3-20
在线时间
4 小时
发表于 2018-11-11 21:19:06 | 显示全部楼层
原子哥的这些代码,能直接用?我直接写有错  :Ex_NVIC_Config(GPIO_E,2,FTIR);         //下降沿触发
                                  Ex_NVIC_Config(GPIO_E,3,FTIR);         //下降沿触发
                                 Ex_NVIC_Config(GPIO_E,4,FTIR);
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-21 21:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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