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

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

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

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

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

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

相关推荐
for_ever_love__2 小时前
python基础语法学习: 数据容器
windows·python·学习
云空3 小时前
《电子专业完整学习路线图(分两套:本科四年版 / 零基础自学速成版)》
科技·学习·学习方法·高考
min(a,b)3 小时前
学习第16天:LangGraph 与 Agent 工作流编排
学习
woshihuanglaoshi3 小时前
鸿蒙技术进阶全景高级成长体系:从初中级到架构师的技能树/学习路径/项目实战/认证体系系统性方法论
学习·华为·harmonyos
AI即插即用3 小时前
即插即用系列 | IEEE TMI PLG-HN:原型学习引导的 CNN-Transformer 混合网络,攻克乳腺肿瘤分割难题
人工智能·深度学习·神经网络·学习·目标检测·cnn·transformer
for_ever_love__5 小时前
python基础语法学习: 变量, 输入输出, 运算符
网络·python·学习
学习和思考5 小时前
非自动化专业如何自学PLC?我的6个月学习路线图
笔记·学习·自动化·学习方法
拾陆楼5 小时前
PT: DMSA辅助调tree报告前后级余量脚本
后端·学习
sbjdhjd7 小时前
大三网安秋招核心学习前言(AI 安全 + Web 漏洞 + 内网渗透全考点)
人工智能·网络协议·学习·安全·网络安全·开源·php
LccKyI8 小时前
C#学习day06(方法/函数及其关键字,附思维导图)
经验分享·学习·c#