(三) STM32 外部中断的原理与应用( 四 )


#define NVIC_PriorityGroup_4 ((uint32_t)0x300) //选择第4种

这里我说一下为什么要设置分组和优先级?首先中断需要有优先级 , 事件有重要和次要之分 , 当CPU接到更重要的中断请求时 , 应当先去处理重要的事情 。 设计优先级分组是一个更灵活的选择 , STM32使用了4个中断优先级的寄存器位 , 这就意味着可以设置16种优先级 , 比如说我做的项目会突发很多种情况 , 这时就可以设置为第3种 , 有8种抢占(先后)级别 , 2种响应级别;如果中断的情况不多 , 可以设置为第2种 , 那就会有4种抢占(先后)和4种响应 , 这样的设计就可以灵活对付很多复杂的情况 。 注意:
一般情况下 , 系统代码执行过程中 , 只设置一次中断优先级分组 , 比如分组3 , 设置好分组之后一般不会再改变分组 。 随意改变分组会导致中断管理混乱 , 程序出现意想不到的执行结果 。

3、中断线的概念

STM32的每个IO都可以作为外部中断输入 。
STM32的中断控制器支持19个外部中断/事件请求:
线0~15:对应外部IO口的输入中断 。
线16:连接到PVD输出 。
线17:连接到RTC闹钟事件 。

推荐阅读