cortex M内核优先级设置

Cortex M内核中
每个中断都有一个8位的优先级设置寄存器
这个8位的寄存器可以分为抢占优先级和子优先级两个部分(通过设置优先级组设置)

抢占优先级和子优先级有什么用?
举例说明:
有两个中断A、B
A的抢占优先级比B的高
当B发生中断,正在执行B的中断服务函数时
A发生了中断,这个时候,会跳转到A的中断服务函数
A的中断服务函数执行完毕后,再接着执行B的中断服务函数
这就是中断抢占

子优先级的作用是当两个中断的抢占优先级相同时,这两个中断同时发生(或者都被挂起的状态下)
子优先级高的先执行,低的暂时挂起,等子优先级高的执行完后再执行
由于抢占优先级一样,不会发生中断抢占

虽然这个是8位的寄存器,但是一般的单片机都不会使用全部8位
规定最少使用高3位(具体可以参考《Cortex-M4权威指南》)
LPC54606的优先级就只用了高3位(程序注释可能没有改)
而K60、K66、KV58、RT1052都是用了高4位

只用高3位的情况下
设置中断优先级组 0: 0个抢占优先级 8个子优先级
1: 2个抢占优先级 4个子优先级
2: 4个抢占优先级 2个子优先级
3: 8个抢占优先级 0个子优先级

只用高4位的情况下 0: 0个抢占优先级 16个子优先级
1: 2个抢占优先级 8个子优先级
2: 4个抢占优先级 4个子优先级
3: 8个抢占优先级 2个子优先级
4: 16个抢占优先级 0个子优先级

因为用的是高位 所以设置优先级分组时,需要用 优先级分组 = 0x07 - 序号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值