外部中断AFIO->EXTIC配置问题!

2019-07-21 08:54发布

void Ex_NVIC_Config(u8 GPIOx,u8 BITx,u8 TRIM)
{
        u8 EXTADDR;
        u8 EXTOFFSET;
        EXTADDR=BITx/4;//得到中断寄存器组的编号   疑问1,如果bitx是0的时候 EXTADDR的值也是0
        EXTOFFSET=(BITx%4)*4;

        RCC->APB2ENR|=0x01;//使能io复用时钟

        AFIO->EXTICR[EXTADDR]&=~(0x000F<<EXTOFFSET);//清除原来设置!!!
        AFIO->EXTICR[EXTADDR]|=GPIOx<<EXTOFFSET;//EXTI.BITx映射到GPIOx.BITx
       
        //自动设置
        EXTI->IMR|=1<<BITx;//  开启line BITx上的中断
        //EXTI->EMR|=1<<BITx;//不屏蔽line BITx上的事件 (如果不屏蔽这句,在硬件上是可以的,但是在软件仿真的时候无法进入中断!)
        if(TRIM&0x01)EXTI->FTSR|=1<<BITx;//line BITx上事件下降沿触发
        if(TRIM&0x02)EXTI->RTSR|=1<<BITx;//line BITx上事件上升降沿触发
}

这是原子的源代码
注意看红 {MOD}代码的第一条,得到 EXTADDR=0
红 {MOD}代码的第三条 AFIO->EXTICR[EXTADDR]也就是 AFIO->EXTICR0
问题就出现在这里 我在STM32中文参考手册上看到 AFIO->EXTICR最小值是  AFIO->EXTICR1
如下:
AFIO->EXTICR1
AFIO->EXTICR2
AFIO->EXTICR3
AFIO->EXTICR4
四个寄存器  并没有  看到 AFIO->EXTICR0  这个寄存器   既然程序没有问题  那么就是参考手册的问题,或者是我的理解的问题?


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
xiao19344859
1楼-- · 2019-07-21 10:17
简单的说 就是手册上没有AFIO->EXTICR0 这个寄存器  只有
AFIO->EXTICR1
AFIO->EXTICR2
AFIO->EXTICR3
AFIO->EXTICR4
这四个寄存器 是用来设置外部中断具体在那个位的
xiao19344859
2楼-- · 2019-07-21 13:46
 精彩回答 2  元偷偷看……
xiao19344859
3楼-- · 2019-07-21 16:32
在百度上查找到了原因,和我猜测的是 一样,是手册上的标注问题AFIO->EXTIC1对应AFIO->EXTIC0
AFIO->EXTIC2对应AFIO->EXTIC1
AFIO->EXTIC3对应AFIO->EXTIC2
AFIO->EXTIC4对应AFIO->EXTIC3
1208
4楼-- · 2019-07-21 20:34
xiao19344859 发表于 2018-10-18 19:27
在百度上查找到了原因,和我猜测的是 一样,是手册上的标注问题AFIO->EXTIC1对应AFIO->EXTIC0
AFIO->EXTIC ...

不好意思,看错了

一周热门 更多>