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

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

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

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

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

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

相关推荐
每天题库3 分钟前
机修钳工题库计算题专练,尺寸公差公式熟练应用
学习·安全·考试·题库·考证
dear_bi_MyOnly21 分钟前
数组字符串深度解析:从入门到卡牌实战
开发语言·c++·学习
山岚的运维笔记1 小时前
mysql 专业笔记 -- 第 1 章:MySQL 入门
运维·数据库·笔记·后端·学习·mysql·dba
小弥儿1 小时前
GitHub今日热榜 | 2026-09-01:迷你小模型登场
学习·microsoft·开源·github
高亦真1 小时前
今天是学习嵌入式的第33天
linux·学习·算法
在线考试系统推荐2 小时前
拆成多道小题,优考试“理解题“怎么用?
服务器·人工智能·学习
2301_802651082 小时前
linux系统的学习:网络
linux·网络·学习
zyf1044162 小时前
暑期实践日志 Day44:梳理剪辑实践成果,进行学习总结
学习·计算机网络·剪辑·暑期实践·课题任务
ouynagda2 小时前
Linux Socket 网络编程学习笔记
linux·网络·学习
我爱cope2 小时前
【计算机网络 | 网络层12:SDN:控制平面与数据平面分离意味着什么?】
网络·学习·计算机网络·平面