FreeRTOS 中有一些函数只供系统内核使用,用户应用程序一般不允许使用,这些 API 函数就是系统内核控制函数。
内核控制函数
顾名思义,内核控制函数就是 FreeRTOS 内核所使用的函数,一般情况下应用层程序不使用这些函数,在 FreeRTOS 官网可以找到这些函数,如下图所示:
1、函数 taskYIELD()
此函数用于进行任务切换,此函数本质上是一个宏
2、函数 taskENTER_CRITICAL()
进入临界区,用于任务函数中,本质上是一个宏
3、函数 taskEXIT_CRITICAL()
退出临界区,用于任务函数中,本质上是一个宏
4、函数 taskENTER_CRITICAL_FROM_ISR()
进入临界区,用于中断服务函数中,此函数本质上是一个宏
5、函数 taskEXIT_CRITICAL_FROM_ISR()
退出临界区,用于中断服务函数中,此函数本质上是一个宏
6、函数 taskDISABLE_INTERRUPTS()
关闭可屏蔽的中断,此函数本质上是一个宏
7、函数 taskENABLE_INTERRUPTS()
打开可屏蔽的中断,此函数本质上是一个宏
8、函数 vTaskStartScheduler()
启动任务调度器
9、函数 vTaskEndScheduler()
关闭任务调度器
10、函数 vTaskSuspendAll()
挂起任务调度器,调用此函数不需要关闭可屏蔽中断即可挂起任务调度器
11、函数 xTaskResumeAll()
此函数用于将任务调度器从挂起壮态恢复
12、函数 vTaskStepTick()
此函数在使用FreeRTOS的低功耗 tickless模式的时候会用到,即宏
configUSE_TICKLESS_IDLE 为 1。当使能低功耗 tickless 模式以后在执行空闲任务的时候系统时钟节拍中断就会停止运行,系统时钟中断停止运行的这段时间必须得补上,这个工作就是由函数 vTaskStepTick()来完成的