中断和事件
- 总述
- M4的内核最多支持256个中断,但是STM32只用了其中一部分不到100个。
- 中断分两种,一种是内核中断(十个左右),这是M4内核自己玩的复位,系统服务等,不用去管它(水平不够,管也管不了);还有一种是可屏蔽中断(八九十个),如定时器、串口、spi、DMA等,需要用什么就用。
- EXTI 外部中断,可以自己配置发生它们的事件(中断)的请求,可以软件触发,也可以硬件,上升沿下降沿的io电平。
刚开始学习的时候不清楚中断和事件两者之间有什么区别,后来研究了EXTI框图,了解到,当检测到输入触发电平的时候,信号会分成两条路,一条会由电路直接产生相应的脉冲,这就是事件,而另一条则会通过NVIC中断需要软件进行中断优先级配置,这就是中断。
- 外部中断/事件线(EXTI)
- 共有23个外部中断线,16个分别链接到GPIO口上,另外七条连RTC,PVD,以太网唤醒等
- 可用软件触发,通过写入软件中断事件寄存器(EXTI_SWIER)触发。
- 寄存器配置
- 中断屏蔽与事件屏蔽寄存器是根据使用需要,决定屏蔽哪一个。
- 上升沿,下降沿寄存器,我一般都是都置位,信号跳变了,就有效
- 软件中断事件寄存器和挂起寄存器是使用软件强行触发中断时用的,前者置位后触发该中断,再通过挂起寄存器相应位置置位清除前者的状态(不能直接通过软件中断事件寄存器置零取消)。