启动FreeRTOS后,中断优先级分组策略自动设置为4位全部用于前抢占优先级,所以抢占优先级编号是0到15.这个设置对于文件FreeRTOSConfig.h中的参数configPRIO_BITS,默认定义如下: image-20231206204323719 这个参数在CubeMX中不能修改,固定为4,也就是分组策略使用4位抢占优先级。 在CubeMX中设置FreeRTOS的“config”参数时,...
1.configPRIO_BITS会被定义为:__NVIC_PRIO_BITS, 这个值在CMSIS中有定义,用来对后续中断 ( Pend_SV 和 SYSTICK )进行配置。 2.configLIBRARY_LOWEST_INTERRUPT_PRIORITY,用来配置当前中断条件下的最低优先级 configKERNEL_INTERRUPT_PRIORITY,实际传递给相关寄存器的值 3.configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY...
}#ifdef__NVIC_PRIO_BITS{/* Check the CMSIS configuration that defines the number of * priority bits matches the number of priority bits actually queried * from the hardware. */configASSERT( ( portMAX_PRIGROUP_BITS - ulMaxPRIGROUPValue ) == __NVIC_PRIO_BITS ); }#endif#ifdefconfigPRIO_BI...
#define configKERNEL_INTERRUPT_PRIORITY ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ) #define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ) configMAX_SYSCALL_INTERRUPT_PRIORITY = 01010000 static portFORCE_INLINE...
(1)configPRIO_BITS此宏用来设置MCU使用几位优先级。 (2)configLIBRARY_LOWEST_INTERRUPT_PRIORITY此宏用来设置最低优先级。 (3)configKEYNEL_INTERRUPT_PRIORITY此宏是configLIBRARY_LOWEST_INTERRUPT_PRIORITY左移得来的。 此宏用来配置系统调用(PendSV)和滴答定时器(Systick)的中断优先级。
#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ) 1. 2. 此宏设置好以后,低于此优先级的中断可以安全的调用FreeRTOS的API函数,高于此优先级的中断FreeRTOS是不能禁止的。中断服务函数也不能调用FreeRTOS的API函数。
FreeRTOSConfig.h 文件是 FreeRTOS 的工程配置文件,因为 FreeRTOS 是可以裁剪的实时操作内核,应用于不同的处理器平台,用户可以通过修改这个 FreeRTOS 内核的配置头文件来裁剪 FreeRTOS 的功能,所以我们把它拷贝一份放在 user 这个文件夹下面。打开 FreeRTOSv9.0.0 源码,在“ FreeRTOSv9.0.0\FreeRTOS\Demo”文件...
to all Cortex-M ports, and do not rely on any particular library functions. */#defineconfigKERNEL_INTERRUPT_PRIORITY(configLIBRARY_LOWEST_INTERRUPT_PRIORITY<<(8-configPRIO_BITS))/* !!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!! See...
当然,如果用户不需要使用任务通知功能相关的函数,可以在FreeRTOSConfig.h文件中配置此宏定义为0来禁止,...
#defineconfigPRIO_BITS 4 /* 15 priority levels */#endif /* The lowest interrupt priority thatcan be used in a call to a "set priority"function. */#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 0x0f /* The highest interrupt priority thatcan be used by any interrupt serviceroutine that mak...