好好学习,天天向上! |
启动流程 有两种
1.RTOS系统初始化,同时创建所有任务,再启动RTOS调度器
2.RTOS系统初始化,只创建一个启动任务() ,再启动RTOS调度器 在创建任务完成之后 启动任务把自己删除掉
从这里看以看出 RTOS系统初始化了,同时创建所有任务 所以我们CubeMX生成的是第二种。
osThreadDef 本质上是一个宏定义
定义了一个结构体
const 说明是一个常量,说明这个结构体是不会改变的 会放在ROM里面
osThreadDef_t 是结构体类型
##连接符 把name变为一个字符串 同时返回一个句柄
LED1TaskHandle = osThreadCreate(osThread(LEDTask), NULL);
真正的创建任务
osThread(LEDTask) 也是宏定义
对前面定义的结构体进行取地址
此外另一种任务创建方式
1.先创建句柄
2.创建任务执行函数
3.创建任务的函数
官网上其实有更详细的讲解 https://www.freertos.org/zh-cn-cmn-s/a00125.html
删除任务 vTaskDelete( xHandle ) 其中xHandle 是待删除的任务的句柄
和前面的一样
任务的挂起
任务的恢复
本人水平较低,参考了他人文章,写着也是平时回顾,欢迎各位指正、交流!共勉!
上文:手动移植FreeRTOS和CubeMX生成FreeRTOS-CSDN博客
下文:FreeRTOS的学习与应用