FreeRTOS任务优先级和裸机开发的中断优先级有何联系

结论

中断可以打断FreeRTOS任意优先级的任务。

中断分为两类

受FreeRTOS管理的中断

在学习FreeRTOS的时候可以发现FreeRTOS提供的一些API带有FromISR的后缀,这些API就是只能在受系统管理的中断使用。

具体哪些中断受FreeRTOS控制?

FreeRTOSconfig.h文件中有一个宏定义configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY,它决定了操作系统所能管理的最高优先级。

我们可以看一下这个宏定义官网给的注释。

/* The highest interrupt priority that can be used by any interrupt service
routine that makes calls to interrupt safe FreeRTOS API functions.  DO NOT CALL
INTERRUPT SAFE FREERTOS API FUNCTIONS FROM ANY INTERRUPT THAT HAS A HIGHER
PRIORITY THAN THIS! (higher priorities are lower numeric values. */
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5

注释的意思大概就是这个参数决定了可调用FreeRTOS API最高优先级的中断。在STM32中优先级越高,对应数字越小,也就是优先级为4、3、2、1、0、-1、、、的中断不归FreeRTOS管理,在这些中断函数中不能调用FreeRTOS API函数。

不受FreeRTOS管理的中断

不受FreeRTOS管理的中断不能调用FreeRTOS API函数。

posted @ 2023-11-07 22:08  SuperCodeCat  阅读(35)  评论(0)    收藏  举报  来源