系数不写死:用两个宏推导全项目 14 处系数

📅 2026/7/16 11:46:12
系数不写死:用两个宏推导全项目 14 处系数
一句话: 物料从 16 位换成 12 位全项目 14 处硬编码的换算系数都要改。如果在两个基础量分辨率、量程上定义宏其他系数自动推导——以后换物料只改两行全项目跟着变。适合谁读适合嵌入式开发者、单片机初学者及遇到类似问题的工程师问题项目中一个 DAC 芯片的物料从 16 位版换成了 12 位版。16 位版满量程码 65535 → 电流系数 65535/300 136.53 12 位版满量程码 4095 → 电流系数 4095/300 13.65之前这两个系数是硬编码的// 散落在 3 个文件、14 个位置 current_ma dac_code / 136.53f; // 16位版的系数 current_ma dac_code / 68.27f; // 双通道并联的系数换物料 改 14 个地方 一定有漏的。改法系数溯源宏推导两个基本事实DAC 满量程码值 409512位版或 6553516位版 DAC 满量程电流 300mA系数不是两个独立数字——它们从这两个基础量推导#define DAC_MAX_CODE 4095.0f // 满量程码值 #define DAC_FULL_SCALE 300.0f // 满量程电流 (mA) // 换算系数自动推导——不用改 #define SINGLE_COEFF (DAC_MAX_CODE / DAC_FULL_SCALE) // 4095/300 #define DUAL_COEFF (DAC_MAX_CODE / (DAC_FULL_SCALE * 2)) // 4095/600以后换回 16 位版#define DAC_MAX_CODE 65535.0f // 只改这一行 // SINGLE_COEFF 和 DUAL_COEFF 自动跟着变为什么这个设计好硬编码宏推导换物料改 14 处改 2 行漏改风险高——14 处里漏一个零——系数自动算的可读性不知道 136.53 从哪来的一眼看出是 DAC_MAX / FULL_SCALE代码里出现两次以上的计算公式就值得溯源它的输入量用宏推导。总结要点说明找到系数的基础量满量程码、满量程物理值——这两个不会同时变用宏推导系数 基础量1 / 基础量2让编译器帮你算只暴露基础量给维护者换物料只改基础量系数自动更新有用的话点个收藏下次调试直接用。有问题欢迎评论区交流看到了都会回。