目录
资源配置
1、定时器3中断优先级为3
2、定时器4中断优先级为4
3、FreeRTOS中断配置
OS系统管理不高于中断优先级4的中断。
#ifdef __NVIC_PRIO_BITS /* __NVIC_PRIO_BITS 已经在stm32f1xx.h里面定义为4 */
#define configPRIO_BITS __NVIC_PRIO_BITS
#else
#define configPRIO_BITS 4
#endif
#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 0xF //定义内核中断优先级的,决定了可以有多少个优先级
#define configKERNEL_INTERRUPT_PRIORITY ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 4 //系统可管理的最高中断优先级 ,中断优先级等于低于此值的,会被屏蔽
#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
测试方案
1、定时器3溢出中断中闪烁led1
2、定时器4溢出中断中闪烁led2
3、通过实时仿真,控制任务中标志位,操作:关闭中断,开启中断
易出 bug
通过以下方式关闭中断后 ,不能使用vTaskDelay,或者带有vTaskDelay的delay_ms
portDISABLE_INTERRUPTS(); //关闭中断
portENABLE_INTERRUPTS(); //打开中断
否则造成portDISABLE_INTERRUPTS失效现象。
测试代码
8-FreeRTOS模板-中断测试.rar: (访问密码:1666)https://url48.ctfile.com/f/33868548-915327345-070a97?p=1666