2019-07-20 23:41发布
嘀嗒 发表于 2018-8-1 23:08 谢谢楼主精心列举解答问题,解决了我许多困惑。
warship 发表于 2018-7-23 20:49 问题十一:两个不同的中断,优先级可以设置完全一样吗? 答:可以。 实际上,我们常用的STM32是用4位来区 ...
最多设置5个标签!
感谢支持,欢迎来提问,知无不言,哈哈。
系统复位之后,会将NVIC内核寄存器SCB->AIRCR的BIT10:8这三位变成000,也就是说默认采用分组方法0:从BIT0处进行分组,即BIT0代表子优先级,BIT1-7代表抢占优先级。具体在实际为4位的优先级系统中,则4位全都是抢占优先级,没有子优先级。
这样的话,抢占优先级范围为0-15共16级,0级响应优先级,所以开机不设定优先级分组也是可以工作的。此时,任意两个中断之间都是抢占关系(当然只有数值低的中断才能抢占数值高的中断了,注意数值越低越优先),你后面在给每个中断分配优先级时,抢占优先级可以在0-15内选择,无须设置响应优先级,假如这种优先级分组可以满足你全系统的实际要求,开机不设置优先级也无妨的。
这个是全局性的系统分组,至于各个中断通道,其代表自身优先级的4BIT都被复位为0,包括我们常用的系统嘀哒SYSTICK也是0,即都是最高优先级。
感谢搂主,正在努力学习中。
问题十四:最高的优先级是0吗?
答:我们前面说了,STM32常见芯片是以4位来表达优先级的,所以共有16个不同的优先级。
其值越小则优先级越高,那么最高优先级就是0了。对于240个外部中断来说就是如此,但是
系统内核为自己留了后手,其中有几个比0的优先级还高,是负值,并且这些为负值的优先级还是固定的,
用户无法对此进行重新设置。分别是复位的优先级最高,为-3, 不可屏蔽中断次之,为-2,
硬件故障再次之,为-1
详见下表:
一周热门 更多>