| 好好学习,天天向上! |
启动流程 有两种
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的学习与应用
本文详细介绍了FreeRTOS的两种启动流程,如何使用osThreadDef创建任务,以及任务的删除、挂起和恢复方法。重点提到了CubeMX生成的默认设置。作者水平有限,鼓励交流指正。
829

被折叠的 条评论
为什么被折叠?



