STM32提供68个中断通道,每一个中断通道对应一个中断源,这里的中断源是指引发中断的外设(例如,I2C,UART,EXTI等等)。每一个中断源又可以包括多种中断发生情况,例如UART发送数据完毕,接收到数据等情况均可能引起UART中断源向STM32内核提出中断处理请求。
STM32的中断优先级可以分为抢占式优先级和非抢占式优先级控制两部分。
为了符合COTEX-M3标准,STM32的中断源优先级寄存器采用8位的方式存储,但是只是用了高4位,低4位保留未用。高4位又被分为了两段:抢占式优先级控制段和非抢占式优先级控制段。STM32提供了一个函数
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_x);
用于将这4位进行控制段分配划分,如下表,函数参数就是表的编号列。
对于一个特定的系统,只能在系统启动初调用该函数一次,指定优先级段分配方式。之后其他中断源配置均使用函数
NVIC_Init(&NVIC_InitStructure);--------------------------------------------优先级分组
进行中断源进行具体的优先级配置。涉及到的配置参数如下:
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;-----抢占式优先级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;---------------非

STM32提供68个中断通道,每个中断源对应不同的外设,如I2C、UART等。中断优先级由抢占式和非抢占式两部分构成,其中4位优先级寄存器用于控制。NVIC_PriorityGroupConfig设置优先级段分配,NVIC_Init配置具体中断源的优先级。抢占式优先级高的中断可以嵌套中断低优先级任务,相同抢占式优先级时,非抢占式优先级高或中断序号低的中断先响应。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



