一句话: 物料从 16 位换成 12 位,全项目十几处硬编码的换算系数都要改。在两个基础量上定义宏,其他系数自动推导——以后换物料只改两行。
适合谁读:改一个系数要翻遍所有文件的嵌入式开发者。
问题
物料换了:从 16 位版换成 12 位版。
16 位版:满量程 65535 → 系数 = 65535/300
12 位版:满量程 4095 → 系数 = 4095/300
之前系数是硬编码的,散落在多个文件、十几个位置。换物料 = 改十几处 = 一定有漏的。
改法:系数溯源
两个基本量不会同时变:
#define DAC_MAX_CODE 4095.0f // 分辨率
#define DAC_FULL_SCALE 300.0f // 满量程物理值
// 系数自动推导
#define BASE_COEFF (DAC_MAX_CODE / DAC_FULL_SCALE)
#define DUAL_COEFF (DAC_MAX_CODE / (DAC_FULL_SCALE * 2))
以后换芯片:
#define DAC_MAX_CODE 65535.0f // 只改这一行
// 所有系数自动跟着变
对比
| 硬编码 | 宏推导 | |
|---|---|---|
| 换物料 | 改十几处 | 改 2 行 |
| 漏改风险 | 高 | 零——系数自动算 |
| 可读性 | 不知道数字从哪来 | 一眼看出是 MAX/FULL_SCALE |
代码里出现两次以上的计算公式,就值得溯源输入量,用宏推导。
有用的话点个收藏,下次换物料直接查。有问题欢迎评论区交流。

881

被折叠的 条评论
为什么被折叠?



