概念
在FreeRTOS中,线程(Thread)和任务(Task)的概念是相同的。每个任务就是一个线程,有着自己的一个程序。函数的模型示例如下所示,通常情况下包含一个永远不会退出的循环体。
void TaskFunction( void *pvParameters )
{
int32_t test = 10;
for(;;)
{
}
vTaskDelete(NULL);
}
这个任务函数不能有返回值(即使用return语句),不然会导致异常。如果不需要这个任务的话,必须要用语句显示地删除这个任务(比如调用vTaskDelete()这个函数)。每一个创建的任务有自己的栈区(用于存储数据)以及优先级(用于任务的调度)。
任务的状态
包括就绪状态(Ready),运行状态(Running),阻塞状态(Blocked),挂起状态(Suspended)。状态之间的切换可以由调用对应箭头上的CMSIS RTOS函数实现。
任务的特征
- 由C语言编写的
- 运行在一个无限的循环里
- 有自己独立的栈区和优先