FreeRTOS-中断管理

1
2
3
4
5
6
7
8
9
10
11
12
/*****************************************************************************************/
/*                               FreeRTOS与中断有关的配置选项                              */
/*****************************************************************************************/
#ifdef __NVIC_PRIO_BITS
    #define configPRIO_BITS             __NVIC_PRIO_BITS
#else
    #define configPRIO_BITS             4                  
#endif
#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY         15  //中断最低优先级
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY    5   //系统可管理的最高中断优先级
#define configKERNEL_INTERRUPT_PRIORITY      ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )

1.configPRIO_BITS

配置系统MCU使用几位优先级,不同的MCU数值不同,STM32为4

2.configLIBRARY_LOWEST_INTERRUPT_PRIORITY

配置MCU最低优先级的级数

3.configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY

配置系统可管理的最高中断优先级

4.configMAX_SYSCALL_INTERRUPT_PRIORITY

配置好后,可以调用API函数管理小于等于此优先级的中断,但不能管理高于此优先级的中断。

5.API函数开关中断

1
2
portENABLE_INTERRUPTS();    //开中断
portDISABLE_INTERRUPTS();   //关闭中断