嵌入式开发学习日志49——任务动态创建

实际上,上章所讲述的静态创建在实际应用中用得不多,更通常的是使用动态创建的方式,让系统自动给任务进行堆栈以及控制块的分配,这样就省去了自己分配的烦恼。

不过值得注意的是,静态创建调用的内存空间是从SRAM中分配的,而动态创建所需的空间也是从SRAM中分出来的,并非想当然的DRAM(动态随机存储器)。DRAM的存储单元采用的是电容为基础的电路,由于电容的放电会导致里面存储的变量信息逐渐失去,一般在芯片上没有集成DRAM控制器的情况下,不会建议使用DRAM来存储重要的变量信息。

使用动态内存时,会使用**xTaskCreate()**函数进行任务的创建,具体代码如下:

这里就可以看出和静态创建的区别了。静态创建时,我们预先定义好了任务控制块,因此需要将该控制块的句柄(指针)传递给xTaskCreateStatic()函数,而在动态创建中,由于是系统给我们定义好了堆栈和控制块,xTaskCreate()最后会返回一个指向控制块的句柄,此时的控制块就是动态分配后的一块内存。

而之后的具体流程实际上就跟静态创建时的大差不差了,创建开始任务任务函数,在该函数内部进一步初始化要执行的任务函数,最后交给任务调度器进行调度即可。

相关推荐
kaixin_啊啊6 小时前
【用于更准确 G×E 基因组预测的大规模作物数据集与基于深度学习的多模态融合框架】论文学习
人工智能·深度学习·学习
xier_ran6 小时前
【infra之路】AI 编译器学习笔记(六):重拾 C++——lambda 与 MLIR 中的回调
c++·笔记·学习
别动我齐刘海9 小时前
Linux 系统调试学习2
linux·运维·c++·人工智能·学习·机器学习·机器人
m4Rk_9 小时前
【论文阅读】Agent 记忆机制(99):PrisMem——从整体分数搜索走向能力驱动的记忆自进化
论文阅读·人工智能·学习·开源·github
PC2005-cloud10 小时前
Mysql学习笔记:InnoDB Cluster 集群从零搭建实战,基于 Docker 实现高可用读写分离架构
笔记·学习·mysql
小陈phd11 小时前
深入理解agent学习笔记(七)——动态提示词与Skills
笔记·学习
我命由我1234511 小时前
田野笔记极简理解
经验分享·笔记·学习·职场和发展·求职招聘·职场发展·学习方法
一木 之林11 小时前
微信小程序开发全攻略·文章版|00 总览:74集学习路径与知识地图
人工智能·学习·计算机视觉·微信小程序·小程序
小陈phd11 小时前
深入理解agent学习笔记(六)——提示工程-优化系统提示词
笔记·学习
诸神缄默不语12 小时前
小春学习日刊 2026年第1期:2026.10.13
学习