打印
[应用相关]

单片机STM32有什么好的裸机程序架构思路推荐?

[复制链接]
886|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
两只袜子|  楼主 | 2023-11-16 09:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 两只袜子 于 2023-11-16 11:23 编辑

本着授人以渔的原则,既提供我一直在用的程序架构,也讲程序架构的设计思路。
如果本文内容,你都能领悟并做到,不管项目多复杂,都将游刃有余。
我研发的那几年,接触大多数工程师,都没有程序架构的概念,基本一个while死循环干到底。
模块之间也没有封装好,导致代码写好以后,扩展性和维护性太差,类似的功能代码,也很难移植到新项目去复用。
早期我也是这样写的,反正实现功能就行了,代码好不好,功能上又看不出区别。
不过,等你接触到复杂的项目时,这招就行不通了,没设计好程序架构,根本做不稳定。
我意识到这个问题,是碰到两种需求的时候:
1.是做一个基于STM32的网关项目,项目做完以后,客户老是要改功能,客户不懂技术,在客户眼里,觉得改一个LED闪烁效果很简单,但对于程序架构没设计好的工程师来说,就是一个噩梦,比如每隔5秒快闪2次这种恶心的需求,搞不好很多代码都要重新组织。
我经常会被这种问题搞到头痛,特别是客户又催得急的时候,经常加班加到焦头烂耳,越急又越搞不出来。
2.我做过的很多项目,其实很多功能都有重复的,比如很多产品都有LED、都有按键、都有掉电参数存储、都有串口协议解析等等。
但是程序架构没写好,导致想移植代码,过来新项目复用时,不太好改,比如老项目才1个LED,新项目有6个LED,类似的还有按键等等。
后面为了有更多的时间摸鱼,我开始思考,怎么把程序写得,改起功能来很方便,代码复用性又很强那种,当时还不知道这个叫程序架构设计。
[程序架构,我觉得是一个系统的学问,贯穿着整个项目,而不是具体某些细节
就是各种功能模块,比如LED特效功能,按键检测功能,菜单功能,系统参数存储功能、语音功能、OTA升级功能等等。
这些功能模块的设计,我通常是采用硬件驱动代码和功能逻辑代码分离的方式,用大白话来说,就是一个功能模块,我可能会分2个.c文件来写,硬件驱动代码我以hal_xxx.c命名,功能逻辑代码我以mt_xxx.c命名。
硬件驱动代码主要是和单片机外设的配置代码,比如设置GPIO、Timer、串口、SPI这些,然后提供硬件接口给mt_xxx.c调用。
拿无际项目特训营的项目6来举例,这个项目可以实现远程控制,因为加了WiFi和4G模块。

使用特权

评论回复
沙发
周半梅| | 2024-8-1 07:19 | 只看该作者

对称性结构,脉冲变压器原边是两个对称线圈,两只开关管接成对称关系,轮流通断,工作过程类似于线性放大电路中的乙类推挽功率放大器

使用特权

评论回复
板凳
Pulitzer| | 2024-8-1 08:22 | 只看该作者

当需要将单个模块板安装在另一个PCB的顶部

使用特权

评论回复
地板
童雨竹| | 2024-8-1 10:18 | 只看该作者

A、B组分先分别用手动或机械进行充分搅拌,让A、B灌封料充分融合

使用特权

评论回复
5
Wordsworth| | 2024-8-1 11:21 | 只看该作者

这时候共模电流会被衰减

使用特权

评论回复
6
Clyde011| | 2024-8-1 12:24 | 只看该作者

由于铜更难以磨削并且可能导致钻头断裂,

使用特权

评论回复
7
公羊子丹| | 2024-8-1 13:17 | 只看该作者

前模块电源灌封时用的最多的是加成型有机灌封硅胶

使用特权

评论回复
8
万图| | 2024-8-1 14:20 | 只看该作者

相反电感量小其阻碍能力也小,它在电路当中抑制的是共模信号

使用特权

评论回复
9
Uriah| | 2024-8-1 15:23 | 只看该作者

在动态测试中,电源的负载能力是最主要的测试参数

使用特权

评论回复
10
帛灿灿| | 2024-8-1 17:19 | 只看该作者

给电源加上额定电压,记录输出电流和电压值

使用特权

评论回复
11
Bblythe| | 2024-8-1 18:22 | 只看该作者

这些半孔就是我们所说的邮票孔焊盘

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2055

主题

7458

帖子

10

粉丝