任务挂起函数
void vTaskSuspend( TaskHandle_t xTaskToSuspend )
有比较简单的两点需要注意。
第一,使用任务挂起函数必须将INCLUDE_vTaskSuspend配置为1。
第二,实参为要挂起任务的句柄。
void vTaskSuspendAll(void)
这个函数的作用是将所有任务都挂起。说白了就是将任务调度器挂起。调度器被挂起后不能进行上下文的切换,但是中断还是使能的。当调度器被挂起的时候,如果有中断需要进行上下文的切换,那么这个任务将会被挂起,在调度器恢复之后才执行切换任务。
任务恢复函数
void vTaskResume(TaskHandle_t xTaskToResume)
恢复的任务会保留挂起前的状态信息,在恢复的时候根据挂起时的状态继续运行。
要注意的两点和vTaskSuspend一样。
BaseType_t xTaskResumeFromISR( TaskHandle_t xTaskToResume )
该函数专门用于在中断服务程序中恢复被挂起的任务。无论通过调用一次或多次vTaskSuspend()函数而被挂起的任务,也只需调用一次xTaskResumeFromISR()函数即可解挂。
要想使用此函数,除了将INCLUDE_vTaskSuspend置1之外,还需要将INCLUDE_xTaskResumeFromISR置1。
BaseType_t xTaskResumeAll( void )
恢复调度器。
任务删除函数
这个在之前有说
任务延时函数
void vTaskDelay(const TickType_t xTicksToDelay)
void vTaskDelayUntil( TickType_t * const pxPreviousWakeTime,
const TickType_t xTimeIncrement )
终于来了一个有意思的,前边的都给我整困了。
和前边那位不同,这位大哥是用来实现绝对延时的,适用于周期性执行的任务,so,10ms执行一次的任务绝对跟这个大哥有关。
后边的内容我看了看,需要看代码的具体实现,作为初学者的我,并不是很想阅读这部分代码,而是更专注于使用,等把FreeRTOS都过一遍后,再来更新。