原帖:要产生中断,必须先配置好并使能中断线。根据需要的边沿检测设置2个触发寄存器(EXTI_RTSR和EXTI_FTSR),同时在中断屏蔽寄存器的相应位写’1’允许中断请求。当外部中断线上发生了期待的边沿时,将产生一个中断请求,对应的挂起位也随之被置’1’。在挂起寄存器的对应位写’1’,将清除该中断请求。
如果需要产生事件,必须先配置好并使能事件线。根据需要的边沿检测设置2个触发寄存器(EXTI_RTSR和EXTI_FTSR),同时在事件屏蔽寄存器的相应位写’1’允许事件请求。当事件线上发声了需要的边沿时,将产生一个事件请求脉冲,对应的挂起位不被置’1’。
在这里的挂起位就是我们平常说的中断标志位吧,那么发生了相应的中断/事件,为什么会出现不同的情况呢?
是翻译出错了,还是本来就是这个样子的?请大侠帮忙解释一下。。
说明:在EXTI中有一个挂起寄存器EXTI_PR,而在中断向量控制器中也有对应的中断激活寄存器。
这两个寄存器就是平常的状态寄存器吧。中断向量控制器就是控制外部的中断请求能否经过通道设置对应的激活寄存器的位,而如果中断向量的中断激活寄存器置1表示要发生相应的中断,进入中断处理函数,是这样理解吧?
然后在把EXTI设置成事件触发之后,当发生了相应的事件,那么EXTI_PR寄存器的对应位应该是要被置1的,只是无法设置中断激活寄存器的对应位,所以不能进入中断。
如果上面两点分析正确,那既然EXTI_PR有位置1,我通过软件轮询方式怎么查询不到该位置1呢?从而无法进入相应的事件处理函数,搞不明白这点 |