在学习RTOS的时候,个人觉得带着问题去学习,会了解到更多。
1、什么是任务?
------ 在FreeRTOS中,每个执行线程都被称为”任务”。每个任务都是在自己权限范围内的一个小程序。其具有程序入口每个任务都是在自己权限范围内的一个小程序。。其具有程序入口通常会运行在一个死循环中,也不会退出。
一个任务函数可以用来创建若干个任务——创建出的任务均是独立的执行实例,拥有属于自己的栈空间,以及属于自己的自动变量(栈变量),即任务函数本身定义的变量。
任务从非运行态转移到运行态被称为”切换入或切入(switched in)”或”交换入(swapped in)”。相反,任务从运行态转移到非运行态。被称为”切换出或切出(switched out)”或”交换出(swapped out)”。FreeRTOS的调度器是能让任务切入切出的唯一实体。
2、如何创建一个或多个任务的实例
------- 创建任务使用FreeRTOS的API函数xTaskCreate()。
portBASE_TYPE xTaskCreate(pdTASK_CODE pvTaskCode,
const signed portCHAR * const pcName,
unsigned portSHORT usStackDepth,
void *pvParameters,
unsigned portBASE_TYPE xPriority,
xTaskHandle *pxCreatedTask);
pvTaskCode : 任务只是永不退出的C函数,实现常通常是一个死循环。参数pvTaskCode只一个指向任务的实现函数的指针 (效果上仅仅是函数名)
pcName : 具有描述性的任务名。这个参数不会被FreeRTOS使用。其只