打牛是什么意思| 什么叫| 晚上睡觉口干是什么原因| 心脏跳快吃什么药好| 窦性心律不齐是什么| 麦冬有什么功效| 试管婴儿什么价格| 假冒警察什么罪怎么判| 屁很多是什么原因造成的| tct检查什么| 什么是籍贯| 经络是什么| 经常上火口腔溃疡是什么原因| 什么是招风耳图片| 肿气肿用什么药比较好| 蒙字五行属什么| 三七有什么功效和作用| 指奸是什么意思| 什么叫放疗治疗| 称心如意是什么意思| 泡芙是什么意思| 妊娠高血压对胎儿有什么影响| 李维斯属于什么档次| 乳腺腺体是什么| 反酸烧心吃什么药效果好| 什么是奇门遁甲| 吃什么中药能降血压| 九个月的宝宝吃什么辅食食谱| t1w1高信号代表什么| 做胃镜前喝的那个液体是什么| b型钠尿肽高说明什么| 什么样的伤口需要打破伤风针| 体癣是什么原因引起的| 系带割掉了有什么影响| 月子中心需要什么资质| 沙和尚是什么生肖| 怀孕是什么感觉| 甲基苯丙胺是什么| 瓦是什么的单位| 结婚6年是什么婚| 翘首企盼是什么意思| 次氯酸钠是什么| 狗为什么喜欢吃人屎| 系统性红斑狼疮是什么病| it是什么意思| 尿酸高是什么原因造成的| 萝卜什么时候种| 总出虚汗是什么原因| 屌丝是什么| 肺气肿是什么意思| 工作机制是什么意思| 天使综合征是什么病| 心脏造影是什么意思| 维生素e有什么作用| 口吃是什么意思| 擎天柱是什么车| 一个日一个处一个口念什么| 末法时期是什么意思| 单的姓氏读音是什么| 梦见找鞋子是什么意思| np文是什么意思| o型血与b型血生的孩子是什么血型| 釜底抽薪什么意思| 起水痘不能吃什么食物| 经常胃胀气是什么原因引起的| 什么叫心肌桥| 6月13号是什么星座| 女性白带发黄是什么原因| 小舌头叫什么| 盆腔磁共振平扫能查出什么| 舌头尖发麻是什么原因| 严什么的作风| 梦见拔花生是什么预兆| male是什么意思| 什么不见| 普通门诊和专家门诊有什么区别| 手指伸不直是什么原因| 农历五月初五是什么节日| 七月十四号是什么星座| 小妹是什么意思| 等闲识得东风面什么意思| 中指麻木是什么原因引起的| 血脂和血糖有什么区别| 汗蒸和桑拿有什么区别| 潜行是什么意思| 为什么故宫龙椅坐不得| 49年属什么生肖| pr是什么缩写| 淋巴结肿大吃什么药| ella是什么意思| 什么是赤道| 男字五行属什么| 内膜厚吃什么掉内膜| 直肠炎吃什么药最好| 老蜜蜡什么颜色最好| 百无一用是什么意思| 公诉是什么意思| 川字加一横是什么字| 肠息肉是什么症状| 男人吃四环素治什么病| 珍馐是什么意思| 指甲盖凹陷是什么原因| 产妇吃什么鸡最好| 语文是什么意思| 身份证前六位代表什么| 血脂高胆固醇高吃什么好| 长期喝酒对身体有什么危害| 糖尿病能吃什么水果| 小金人车标是什么车| 五角硬币是什么材质| 多囊有什么症状| 驴友是什么意思| 梦到掉头发是什么意思| 肤如凝脂是什么意思| 吃什么能升血压| 吃什么能长高| 姜黄与生姜有什么区别| 梦见自己和别人结婚是什么意思| 象牙白适合什么肤色| 疱疹是什么症状| 后果自负是什么意思| tomorrow什么意思| 大林木是什么生肖| 冰心原名是什么| 瓒字取名有什么寓意| 为什么会长生长纹| 喘是什么原因造成的| 胃溃疡能吃什么水果| 有胃病的人吃什么最养胃| 吃腰果有什么好处| 脆豆腐是什么做的| 老子是什么时期的人| 医生和医师有什么区别| 什么地点头| 胸闷是什么原因引起的| 驴肉不能和什么一起吃| 什么什么望外| 静脉曲张溃烂擦什么药| 父亲节什么时间| egfr是什么意思| 耳鸣是什么症状| 观字五行属什么| 算了是什么意思| 2021年是属什么年| 可可尼女装什么档次| 梦到大牙掉了一颗是什么意思| 什么重什么轻| 胸骨疼挂什么科| 想飞上天和太阳肩并肩是什么歌| 籍贯一般写什么| 吃了山竹不能吃什么| 什么长什么短| 外科和内科有什么区别| bopv是什么疫苗| 右耳鸣是什么原因| 脑部有结节意味着什么| 我还能做什么| 前列腺炎是什么原因引起| 绍兴本地人喝什么黄酒| 吃完狗肉不能吃什么| wonderland什么意思| 胃胀腹胀吃什么药| 降血脂吃什么最好| 天上火是什么意思| 蓦然是什么意思| 南瓜与什么食物相克| 6月19是什么星座| 烤鱼什么鱼好吃| hrd是什么| 唇炎涂什么药膏| 霉菌反复发作是什么原因| 为什么身上一热就痒| 盆腔磁共振平扫能查出什么| 葡萄糖氯化钠注射作用是什么| 为什么冰箱冷藏室会结冰| 想吐吃什么药| 石女是什么意思啊| 血清肌酐高说明什么问题| 失格是什么意思| 一什么红枣| 胆汁有什么作用| 8月29日是什么星座| brat什么意思| 五月出生是什么星座| 玉米排骨汤放什么调料| 养流浪猫需要注意什么| 运营商是什么意思| 冤亲债主是什么意思| 牛肉馅配什么菜包饺子好吃| r13是什么牌子| 爱是什么结构| 屏蔽一个人意味着什么| mmi是什么药| 什么是偏旁什么是部首| 弓箭是什么时候发明的| 字读什么| 脚踏一星是什么命| 前列腺炎用什么药| 政治庇护是什么意思| 为什么十五的月亮十六圆| 11.2是什么星座| 尿常规白细胞偏高是什么原因| 小白龙叫什么名字| 口腔溃疡是什么原因引起的| 疏肝理气吃什么药| 98年属什么的| 固精是什么意思| 十多块钱的烟什么好抽| 病毒是什么| 胸疼挂什么科室| 尿微量白蛋白是什么意思| 吃什么醒酒| 慈是什么意思| 戾气太重是什么意思| 异口同声是什么意思| 带银子发黑是什么原因| 9月12号是什么星座| 什么是焦虑症| 县级以上医院是指什么| 气血不足什么原因引起的| 男生爱出汗是什么原因| 家有喜事指什么生肖| 义子是什么意思| 韬略是什么意思| 品保是做什么的| 身体湿气重吃什么药| 低血糖是什么原因引起的| 梅花什么时候开放| 大拇指指甲凹陷是什么原因| 娇小是什么意思| 腰果不能和什么一起吃| 我一言难尽忍不住伤心是什么歌| 小腿抽筋吃什么药| 县委书记属于什么级别| 素颜霜是干什么用的| 功是什么意思| 分泌物发黄是什么原因| 吃卡培他滨禁止吃什么| 卡帝乐鳄鱼什么档次| 胎先露是什么意思| 鱼水之欢是什么意思| 爱妃是什么意思| 澳门用什么币种| 为什么女追男没好下场| 什么会导致铅中毒| 胆囊炎有什么症状| 经常便秘吃什么调理| 豆瓣酱可以做什么菜| 乳腺结节看什么科| 做核磁共振需要注意什么| 减肥应该吃什么| 脚趾头抽筋是什么原因| 蜈蚣长什么样| 附属国是什么意思| 全身大面积湿疹暗示着什么| 脾虚湿气重吃什么药| 麦粒肿挂什么科| 春天开的花都有什么花| 粉色是什么颜色| 有什么菜好吃| 水肿是什么原因引起的| 附件是什么意思| 克感敏又叫什么| 什么时候满月| 百度
这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 ? 论坛首页 ? 嵌入式开发 ? STM32 ? 嵌入式开发中的程序架构

共1条 1/1 1 跳转至

嵌入式开发中的程序架构

高工
2025-08-04 10:44:12     打赏
百度 影片由绘梦动画创始人李豪凌、导演易小星、在日本CoMixWaveFilms工作室负责CG的竹内良贵三人联合执导,以三段温暖清新的小故事共同组成,从衣食住行四个方面来诉说关于青春的故事,是一部能让观众们跨越国界感受到青春共鸣的新时代动画。

前言

    在嵌入式软件开发,包括单片机开发中,软件架构对于开发人员是一个必须认真考虑的问题。

    软件架构对于系统整体的稳定性和可靠性是非常重要的,一个合适的软件架构不仅结构清晰,并且便于开发。

    我相信在嵌入式或单片机软件开发的初期大多数开发者采用的都是简单的前后台顺序执行架构(我就是这样的)。在嵌入式软件开发中,程序架构主要分为三种,本篇文章将对这三种程序架构做出详解。

软件架构存在的意义

    可以说一个好的程序架构,是一个有经验的工程师和一个初学者的分水岭。软件架构对于开发人员是友好的,你希望先执行什么任务后执行什么任务,或者这一个时间点执行什么任务下一个执行什么任务,又或者什么事件会同步到某个任务等等,在不同的软件架构下,解决上述问题的具体方法都是有所区别的。

    软件架构对开发者最大的帮助是:帮助开发者掌控整个工程的框架,当你熟练使用其中某一个程序架构后,对于系统中出现的bug你一定能够快速的定位并解决。当然,我建议要根据需要选择合适的软件架构进行开发,具体原因在文章后面会进行介绍。

深入介绍三种不同的程序架构

    三种常用的软件架构有:顺序执行的前后台系统、时间片轮询系统和多任务操作系统。为了让大家有一个更为清晰的认识,我分别用三种软件架构对一个实例进行介绍说明。这个实例如下:它有4个任务,这4个任务为按键扫描、声光报警、显示屏刷新和超声波测距。这个实例的具体功能是通过按键设置测量距离的阈值,当测距距离低于设置的阈值时,触发声光报警并且将测量距离实时显示在显示屏上(这个应用是汽车倒车雷达的具体体现)。

1 顺序执行的前后台系统

    在顺序执行的前后台系统中,我会把键盘扫描用查询的方式放在while(1)中,而显示屏刷新和超声波测距使用中断,在中断服务函数中获取测量距离后进行显示,在主函数的循环中进行按键的检测,声光处理也放在主循环中。这样整个程序就以变量标志的同步方式在主循环和后台中断中执行,对应的程序代码如图所示:

image.png

    上面代码是顺序执行前后台系统的主函数。

image.png

    如上代码,顺序执行前后台系统的中断服务函数。

    这种架构的优点是使用简单易于理解,而缺点是每个任务所占的CPU时间过长的话,会导致程序的实时性能差,就比如按键的检测等。

2 时间片轮询系统和多任务操作系统

    时间片轮询法实际上通常出现在操作系统中,也就是说他属于操作系统,但在这里所说的是基于前后台系统的时间片轮询。

    时间片轮询法的实质其实就是选出一个定时器,每进一次定时中断对计数值进行自加,在主循环中根据这个计数值执行任务,这个计数值也就是任务轮询的时间片。

    在这个实例中,如果采用时间片轮询系统的话,首先选用主控芯片的任一定时器,定时器定时时间周期由我们决定,为了保证实时性和运行效率,这个值通常取10ms、30ms、50ms等,我会将按键扫描轮值值设置为20ms,因为按键抖动的时长一般为20ms,这样处理既达到了消抖的目的,又不会漏掉按键的检测。

    而显示屏的刷新设置为30ms,如果你觉得刷新反应慢了也可以修改这一轮询值得到改善;而超声波测距的轮询值设置为100ms,即每隔100模式触发测距一次,这个测距频率已经能够满足大多数的情况了。

    程序代码如下:

image.png

    如上代码,时间片轮询系统的主函数。

image.png

    如上代码,时间片轮询系统的定时器中断函数。

    可以看出时间片轮询法相比顺序执行还是有很大优势的,既有顺序执行法的优点,也有操作系统的部分优点。

3 多任务操作系统

    操作系统的本身是一个比较复杂的东西,任务的管理和调度实现的底层是很复杂和困难的。

    但是,我们一般都是把操作系统本身作为一个工具一个平台,我们的目的是使用它的功能而不是开发一个操作系统。

    我使用过ucos和freertos小型的实时操作系统,也使用过Linux大型的操作系统,有了操作系统,不管是对于程序的稳定性和开发的效率都会好很多。

    我们在使用操作系统的时候更多的需要去学习和理解它的一些调度和通信的方式。

    实际上真正能使用操作系统的人并不多,反而是跑裸机的占大多数,这也和产品的具体要求有关,很多简单的系统只需要裸机即可满足。

    在这里本我不过多的介绍操作系统本身,因为操作系统确实挺复杂的,下面图例中的代码是在freertos中创建按键控制LED亮灭的程序结构,大家可以对比一下:

1750646617538.png

    如上,freertos多任务系统中主函数。

1750646630086.png

    如上,freertos多任务操作系统中的任务回调函数。实际上还有一些STM32框架可以实现操作系统的功能,参考此文:一种STM32框架,实现RTOS的部分功能

如何选择合适的软件架构

    我使用过多种不同MCU做项目开发,例如:STM32、STC15、新唐等,也接触过复杂的设计需求,例如:车载智能系统和智能家居,跑过操作系统ucos、freertos和Linux等等,在回到裸机开发时,就会不然而然的去思考完整系统的软件架构的设计问题,相信在读者中开发裸机的也占大多数。

    我认为没有最好的软件架构(程序架构),而是只有最合适的。因为在不同的应用场景中适合采用不同的程序设计,而单纯的去比较哪种程序架构是最好的没有什么实际的意义。

    那接下来我们来对具体的应用场景进行分析:

在一些逻辑清晰功能单一的系统中就很适合选择顺序执行的前后台架构,这个软件架构往往能够满足我们大部分的需求,比如电饭煲、电磁炉和声控灯泡等;

在一些资源缺乏的单片机并且对系统可靠性要求较高的情况下非常适合,因为这种方法的系统耗费比较小,只是牺牲了一个定时器而已,但是选择此种程序架构需要我们对时间片进行深思熟虑的划分;

最后,在一些功能复杂,逻辑控制较为困难的系统中就适合选择多任务操作系统,比如视频监控系统、无人机等等应用场景。

    作为嵌入式软件工程师,掌握这三种软件架构是非常有必要的,它们可以让我们在设计程序时拥有更多的选择和思考,而每一种不同的程序架构都具备它自己的优势与不足,这需要我们去用心实践方可体会到它的奥妙。





关键词: 嵌入式     程序     架构    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]
大肠炒什么菜好吃 吃什么雌激素会增多 麝香是什么动物 吃什么长得高 重庆房价为什么这么低
每逢佳节倍思亲的上一句是什么 六月六日是什么星座 乙肝五项45阳性是什么意思 cin是什么意思 徒木立信是什么意思
胃疼做什么检查 杭州菜属于什么菜系 月经吃什么 ecc是什么意思 嘴巴干苦是什么原因
lil是什么意思 灵芝泡水喝有什么好处 sam是什么意思 50年婚姻是什么婚 子宫内膜炎有什么症状
藿香正气水不能和什么药一起吃hcv8jop5ns3r.cn 肺炎吃什么药好得快hcv8jop1ns0r.cn 为什么下雨后会出现彩虹chuanglingweilai.com 打是什么意思hcv8jop3ns7r.cn 驼鸟吃什么食物hcv9jop6ns7r.cn
题词是什么意思hcv9jop4ns6r.cn 晚上六点半是什么时辰hcv8jop7ns2r.cn 黄体什么意思sanhestory.com 看病人买什么水果beikeqingting.com 寒湿重吃什么中成药hcv8jop0ns3r.cn
为什么要努力读书hcv8jop8ns4r.cn 细菌感染用什么药hcv8jop9ns1r.cn 一什么耳朵填量词hcv9jop1ns0r.cn 西米是什么做的hcv9jop2ns5r.cn 叫床什么意思hcv8jop1ns4r.cn
菜花长什么样hcv9jop7ns1r.cn 竹子可以做什么hcv8jop9ns6r.cn 女生是党员有什么好处xscnpatent.com 肉包子打狗的歇后语是什么hcv8jop6ns1r.cn 什么是角hcv7jop5ns4r.cn
百度