FreeRTOS中断优先级测试

目录

资源配置

测试方案

易出 bug

测试代码


资源配置

1、定时器3中断优先级为3

FreeRTOS中断优先级测试_第1张图片

2、定时器4中断优先级为4

FreeRTOS中断优先级测试_第2张图片

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、通过实时仿真,控制任务中标志位,操作:关闭中断,开启中断

FreeRTOS中断优先级测试_第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
 

你可能感兴趣的:(#,STM32F103,stm32,FreeRTOS)