学习STM32的时候都是用来跑裸机,后面学习了操作系统摆脱了流水线的工作方式,采用实时执行的方式,现在已经大三了,本人打算毕业找工作,于是打算重学一遍操作系统,以备不时之需。

早上睡醒重新看了一下任务的知识,简单写了一下,可以看出任务分为创建、删除、挂起、恢复四个过程。
先来了解一下任务
在FreeRTOS操作系统中,任务有六个特性
1、简单
2、没有使用限制(想多少个任务都可以)
3、支持抢占
4、支持优先级
5、每个任务都有自己的堆栈,RAM使用量增大
6、如果使用抢占必须考虑重入的问题。
在FreeRTOS操作系统中,任务一共有四个状态就绪态、运行态、阻塞态、挂起态

在FreeRTOS中最基础的就是任务创建了,没有任务什么都干不了
任务创建
本质是调用API函数
xTaskCreate(): 使用动态方法创建一个任务
喊一下函数原型
BaseType_t xTaskCreate( TaskFunction_t pxTaskCode,
const char * const pcName,
const uint16_t usStackDepth,
void * const pvParameters,
UBaseType_t uxPriority,
TaskHandle_t * const pxCreatedTask )
参数:
pxTaskCode: 任务函数。
pcName: 任务名字,一般用于追踪和调试
usStackDepth: 任务堆栈大小
pvParameters: 传递给任务函数的参数。
uxPriotiry: 任务优先级
pxCreatedTask: 任务句柄,任务创建成功以后会返回此任务的任务句柄,这个句柄其实就是
任务的任务堆栈。
可以看到这个函数原型,创建一共任务需要任务函数(实现什么功能都在任务函数里写)、任务名字、任务堆栈、参数、优先级、句柄(任务的专属标志)
下面看实例


除了这几个参数还要注意的就是要开启任务调度
我们创建了一个任务,后面不需要了,可以进行任务删除

删除就是一个函数然后是这个任务的句柄,现在是不是有一点重要性的感觉了
有时候我们需要暂停某个任务的运行,过一段时间以后在重新运行。这个时候要是使用任 务删除和重建的方法的话那么任务中变量保存的值肯定丢失了!这个时候我们进行任务挂起。
void vTaskSuspend( 任务句柄)

我们又想重新使用这个任务了,可以进行任务恢复
vTaskResume() 恢复一个任务的运行。

关于FreeRTOS中的任务大概也就这么多,第二遍学习的时候感觉还是不一样的。