FreeRTOS 协同程序
协同程序是一种特殊的多任务编程方式,多个协同程序之间共用调用栈,且正在运行的协同程序不会被其他协程抢占(可以被任务和中断抢占),正在运行的协同程序只能自己主动让出CPU的使用权。要使用协同程序,需要将FreeRTOSConfig.h中的configUSE_CO_ROUTINES设为1。
FreeRTOS的协同程序采用switch-case实现,函数定义方式如下:
1void CoRoutineTask(CoRoutineHandle_t handle,UBaseType_t uxIndex)
2{
3 //协同程序中变量如果要保证值在下一次运行时仍有效,则必须为static
4 static const TickType_t delay = 1000 / portTICK_PERIOD_MS;
5