news 2026/5/21 3:56:02

单片机编程规范1 ---阮丁远 20260509

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
单片机编程规范1 ---阮丁远 20260509

单片机编程规范1 ---阮丁远 20260509 :


1.只用静态数组+is被占用的标志位来 分配内存,不用malloc

2.读写带下标的参数前先验证下标大小范围是否对,比如有的下标只能1开始,因为0的话里面 0-1 就变为负数了

3.可以建立 参数 范围 监控线程,比如 变量只能为1-10的,如果变为0就异常,就强制改为1

4.只用裸机式的函数扫描执行+状态机方式的代码,不用任何阻塞式延时等待的代码

5.重要的数据可以存6-10份冗余备份,读取时读重复次数最多的那份,防止参数意外掉电时丢失

6.参数记忆和读写可以用如下的方式,批量写入 set_canshuo_value_bufs 的字节到储存器,读时用其botelv字段等来读即可:

union set_canshuo_value_info {
u16 set_canshuo_value_bufs[t_page_defs_count+1+addon_sets1_length];
struct {


uint16_t inited_flag; //0

uint16_t addr; //1
uint16_t botelv; //2


uint16_t guoya_fazhi; //3
uint16_t guoya_mode; //4
uint16_t guoya_Delay; //5

。。。。。。。。
}
}


7.简单的lcd屏幕菜单显示可以用 数据体 来配置每项菜单和每项菜单对应的储存器的参数记忆地址,这样无需每个菜单和参数记忆都独立的给其写代码,只需配置好菜单数据体即可,必要时可以设置 自定义界面的回调函数,和 按下设置键时的记忆回调函数,
或者用当前屏幕号+菜单深度值 方式来做界面显示


8.除零异常的分母预判断,数组下标溢出的判断

9.防止堆栈溢出,栈要设得足够大,高速中断的中断函数里尽量避免局部大变量的分配


10.通讯都得加crc16或32的错包判断

11.写24c32等时可以led快闪3下,来判断是否存在频繁写24c32等的bug,导致寿命耗尽

12.电能等累计类的数据永久存储时,可以考虑用寿命几万忆次的铁电存储器,每10秒存一次,每次冗余存6-10份,下次加载时取重复次数最高的那份,

13,对于是否已初始化过的判断标志位,如果标志位显示没初始化过,则再读5次,每次延时10ms,看是否每次都是读到没初始化过,防止不稳定而意外执行初始化出厂设置而丢参数!

14.上电要等10ms左右,等待外置的at24c32等存储器上电稳定,再去读

15. 上电要等100ms左右才合闸或判断各监控adc参数是否正常

16. 串口通讯用以下方式比较稳定:收到第一个字节后​,开始定时变量,这个变量每1ms加1,串口每收到一个新字节就这变量置为0,直到这个变量大于10ms就表示收到完整的一帧数据

17.多路adc采集可以用 adc+DMA方式自动循环采集方式比较好,

18.如果485的发送/接收模式控制脚接到了单片机,需要建立定时器做超时判断,如果很长时间每发送新数据了,就把
这个 485的发送/接收模式控制脚 的状态设为接收模式,防止死机或死锁后一直发送模式而占用485总线,导致也无法收到新数据来退出发送模式!

19.任何外置存储器的驱动代码都需要做测试,比如0-1000地址里分别写入0-1000,然后读出来,看是否对得上

20.做完项目后记得启用单片机的硬件看门狗

21.永久储存时,最好用u16类型的数据类型,就适合大部分参数了,而float类型可以用2个u16类型的数据来拼成,

22. 电压电流比例因子和短路倍数等重要的记忆参数都要做值范围判断,如果不在范围内,就默认加载默认的​电压电流比例因子值而放弃存储器里的电压电流比例因子值,

23.注意算法的cpu耗时和屏幕刷新cpu耗时等,要实时处理的全放到定时器中断里,不要轮询处理实时任务,比如adc采集完200个点(一个20ms周波)后的RMS有效值计算,采集时在定时器中断隔固定时间采集一次adc的DMA值,计算rms时可以在main函数里开个虚拟任务函数轮询计算,因为计算比较耗时,无法放中断里,中断采集完的信号可以弄个变量和main的rms计算函数通讯,

可以考虑采集200个点后(一个20ms周波),暂时暂停采集,等计算rms完成后再开始下一轮采集????,这样就不会因为rms计算慢,而边计算rms边覆盖adc的缓冲区的数据,

24.漏电限幅稳压管或温度限幅稳压管导致的潜在饱和误差

25.对于bug,要准备好一个目录和多个txt文件,及时记录自己代码的bug,或接手的别人代码的各种bug,要深信纸比脑好使,大脑容易忘了各种bug

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/21 3:53:03

3-最好的语言 Reverse 题解writeup

首先使用010打开发现格式类似于xml格式的文本文件,头部有magic字段, 是Python 字节码的反汇编文本(不是 ELF,不是 PE)。编写脚本提取代码 ../../images/pyc_text_to_pseudo.py#!/usr/bin/env python3 # -*- coding: ut…

作者头像 李华
网站建设 2026/5/21 3:47:42

跳槽涨薪的本质

跳槽涨薪的本质 从研二开始准备秋招,到工作快两年,我的思想整体上一直处在一种焦虑、迷茫、犹豫的状态里。 以前很多问题看起来都很复杂:要不要刷 Leetcode?要不要背八股?要不要去大厂?要不要跳槽&#xff…

作者头像 李华
网站建设 2026/5/21 3:41:54

C语言 基础编程练习题(二)

目录 1.判断日期是否合法并格式化输出 2.递归求斐波那契数列第 n 项 3.数组奇偶分离 4.提取字符串中的字母和数字 5.输入年月,计算该月天数 6.有序数组折半查找 7.统计 100~X 间各位数字和为 15 的数的个数 8.找出 1-99 之间的所有同构数 9.矩阵加法 10.定…

作者头像 李华
网站建设 2026/5/21 3:41:35

2026年自助建站平台哪个好?推荐这4个知名建站平台!

2026年自助建站平台哪个好?推荐这4个知名建站平台!想搭建官网、小程序的中小企业和个体户,选对建站平台能省下大量时间和成本。结合艾瑞咨询、中国信通院发布的《2026年中国企业数字化服务市场研究报告》与《2026年中国网站建设行业白皮书》数…

作者头像 李华