STM32F4如何使用抢占优先级和子优先级?

2019-07-14 18:02发布

我在使用基于ARM的微控制器但是我不明白subpriority和preeemptionpriority。例如:NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01;
为什么要使用这些?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
horayte
2019-07-15 01:53
抢占优先级允许ISR被另一个更高优先级的中断抢占(中断)。当优先级较高的中断完成时,优先级较低的中断从停止的位置继续。
另一方面,次优先选与先发制人无关。假设您有两个具有相同优先级的中断,这两个中断都是挂起的。中断处理程序将根据其子优先级选择首先服务的中断处理程序。第一个完成后,第二个将开始。
两个中断似乎不太可能同时发生。可能发生这种情况的一种常见情况是,如果您有一个需要很长时间的中断服务程序。在此例程期间,可能发生了多个其他中断触发。如果是,则子优先级将确定接下来处理哪一个。
最后,随着实际优先级的增加,优先级值会降低。也就是说,Priority=1之前会得到服务Priority=2。

一周热门 更多>