为什么FreeRTOS的中断优先级分组要设置为4?

每个中断的优先级都是用寄存器中的 8 位来设置的,而STM32F1xx 和 F4xx 使用了寄存器 8 位中的高四位[7:4],低四位取零,这样 2^4=16,能表示 16级中断嵌套。

抢占优先级和子优先级(响应优先级)

 FreeRTOS的中断配置没有处理子优先级(亦称响应优先级)这种情况,所以只能配置为组4,直接就16个优先级,使用起来也简单!

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);

补充:

FreeRTOS开关中断的函数为

portENABLE_INTERRUPTS()和portDISABLE_INTERRUPTS(),它们都是宏定义。

函数的定义位于portmacro.h中:

/* 关中断,将configMAX_SYSCALL_INTERRUPT_PRIORITY写入到BASEPRI寄存器,中断抢占优先级低于configMAX_SYSCALL_INTERRUPT_PRIORITY会屏蔽 */ 
#define portDISABLE_INTERRUPTS() vPortRaiseBASEPRI()

 /* 开中断,将BASEPRI寄存器值设置为0,所有中断将得到响应 */ 
#define portENABLE_INTERRUPTS() vPortSetBASEPRI( 0 )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值