FreeRTOS的中断设置
- 本文参考韦东山课程视频,以STM32F103芯片为例,讲述了FreeRTOS的中断体系结构,及配置系统的中断的相关函数和宏函数,对掌握RTOS 中断具有较好的参考借鉴意义。
1. FreeRTOS中断优先级划分
FreeRTOS中,默认芯片为各个外部中断实现了4比特位用于设置优先级,因此可配置16种优先级,正如下图所示。小于0的是不可设置优先级的中断,它们默认优先级最高,一般用于处理复位、硬件错误等紧急的事件,大于等于0的可配置优先级等级的共有0x00 - 0xF0共16个,其正好对应8位二进制数:XXXX0000b,其中的4个X表示芯片为每个中断优先级寄存器实现的4个比特位。
2. 中断相关的几个宏
-
__NVIC_PRIO_BITS
-
位置:
Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f103xe.h
#define __NVIC_PRIO_BITS 4U /*!< STM32 uses 4 Bits for the Priority Levels */
-
作用:本芯片(STM32F103)每个外部中断的优先级寄存器共实现了多少位。
-
-
configPRIO_BITS
-
位置:
Core\Inc\FreeRTOSConfig.h
#define configPRIO_BITS __NVIC_PRIO_BITS
-
作用:本芯片(STM32F103)每个外部中断的优先级寄存器共实现了多少位
-
-
configLIBRARY_LOWEST_INTERRUPT_PRIORITY
-
位置:
Core\Inc\FreeRTOSConfig.h
#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 15
-
作用:设置中断优先级时,能传入的最低优先级的数值(优先级越低数值越高),从上文可知,芯片(STM32F103)每个外部中断的优先级寄存器共实现了4位,所以其能表示的最大优先级数值即为0xF(15)
-