📘 编码规范实战
嵌入式C驱动 · 30章
🧩
第1章
编码规范总纲
核心原则
为什么需要规范?可读性 · 可维护性 · 可移植性
第2章
文件结构规范
头/源文件
职责划分 · 文件头注释 · Include Guard 正确写法
第3章
命名规范 (上)
变量/宏/枚举
匈牙利 vs 下划线 · 宏命名 · 枚举常量
第4章
命名规范 (下)
函数/模块
动作+对象 · 模块前缀 · 避免命名冲突
第5章
注释规范
Doxygen
单行/多行场景 · 函数头注释 · 代码即文档
第6章
排版与缩进
K&R vs Allman
空格与Tab · 行宽与换行规则
第7章
数据类型使用规范
stdint.h
标准整型 · 避免隐式转换 · 布尔类型
第8章
变量使用规范
全局/静态/volatile
全局变量限制 · 静态局部妙用 · volatile理解
第9章
常量与宏定义
const vs #define
枚举替代宏 · 消除魔法数字
第10章
函数设计规范
长度/职责/参数
函数长度控制 · 单一职责 · 参数≤4
第11章
函数内部规范
Early Return
避免深层嵌套 · goto争议与正确用法
第12章
指针使用规范
非空检查/typedef
指针参数检查 · 函数指针 · 复杂声明改造
第13章
内存管理规范
栈/堆/malloc
栈上vs堆上 · malloc/free配对 · 泄漏场景
第14章
结构体与联合体
对齐/位域
对齐填充 · 位域限制 · 联合体类型安全
第15章
错误处理规范
错误码/断言
错误码定义 · 返回值检查 · assert合理使用
第16章
驱动分层架构
HAL/中间件
硬件抽象层 · 驱动解耦 · 回调注册机制
第17章
寄存器操作规范
位操作/内存屏障
SET_BIT/CLR_BIT · 寄存器映射 · 读写顺序
第18章
中断处理规范
ISR黄金法则
临界区保护 · 中断嵌套与优先级
第19章
延时与定时规范
阻塞/非阻塞
软件延时vs硬件定时器 · 超时处理
第20章
状态机编程规范
switch/表驱动
状态事件定义 · 表驱动法 · 框架设计
第21章
通信协议驱动规范
环形缓冲区
数据帧解析状态机 · 超时重传
第22章
I2C驱动规范
起始/停止/ACK
多主机仲裁 · 封装操作
第23章
SPI驱动规范
CPOL/CPHA/DMA
模式配置 · DMA vs 中断 · 片选管理
第24章
UART驱动规范
波特率/FIFO
中断阈值 · 流控RTS/CTS
第25章
GPIO驱动规范
输入输出/中断
上下拉电阻 · 边沿/电平触发
第26章
ADC驱动规范
采样率/DMA双缓冲
分辨率 · 中值/均值滤波
第27章
PWM驱动规范
频率/占空比
互补输出 · 死区插入 · 呼吸灯
第28章
Flash驱动规范
擦写/磨损均衡
写保护 · CRC校验
第29章
代码审查清单
PC-Lint/Coverity
静态检查 · Checklist · 常见缺陷
第30章
持续集成与自动化测试
CI/单元测试
Ceedling/Unity · Makefile/CMake · Git规范