mirror of
http://159.75.139.228:3000/terry/TBooks.git
synced 2025-01-06 06:43:40 +00:00
72 lines
2.1 KiB
Markdown
72 lines
2.1 KiB
Markdown
# 嵌入式编程规范
|
||
|
||
## 一. 基本规范
|
||
### 1.空格的使用
|
||
1. 不适用Tab,只用空格;每个缩进使用四个空格,
|
||
2. 关键字和左括号之间使用一个空格,函数名和括号之间不要空格
|
||
3. 操作符前后加空格,逗号后面加空格;比如:` a + b = 10; `
|
||
### 2.命名规则
|
||
1. 尽量只使用小写字母,第二个单词开始首字母大写,尽量不用数字和缩写
|
||
2. 全局变量使用p_前缀开头,全局函数用L_开头
|
||
|
||
### 3.编写风格
|
||
1. 花括号总与关键字在同一行,比如:
|
||
```c
|
||
int i;
|
||
for (i = 0; i < 5; ++i) {
|
||
nop();
|
||
}
|
||
```
|
||
2. 模块文件对外尽量只暴露全局函数,减少跨文件全局变量,必须要用的时候extern在头文件引出
|
||
|
||
3. 注释风格
|
||
* 文件头用块注释,例如
|
||
```c
|
||
/**********************************************************
|
||
* 文件名:main.c
|
||
* 功能:功能测试
|
||
* 器件型号:FT61F02X
|
||
* 振荡器:内部RC 16MHz/2T
|
||
* Memory: Flash 2KX14b, EEPROM 256X8b, SRAM 128X8b
|
||
* 引脚定义:
|
||
* ----------------
|
||
* VDD-----------|1(VDD) (GND)16|------------GND
|
||
* NC------------|2(RA7) (PA0)15|-------------nc
|
||
* NC------------|3(PA6) (PA1)14|-------------NC
|
||
* NC------------|4(PA5) (PA2)13|--------IIC_SDA
|
||
* NC------------|5(PC3) (PA3)12|-------------NC
|
||
* NC------------|6(PC2) (PC0)11|-------------NC
|
||
* IIC_SCL-------|7(PA4) (PC1)10|-------------NC
|
||
* NC------------|8(PC5) (PC4)09|-------------NC
|
||
* ----------------
|
||
* FT61F023 SOP16
|
||
*说明:
|
||
* 1.PA2--SCL /PA3--SDA /PC1--GPIO /PA4--XSHUT
|
||
* 2.PC4--TX / PC0--RX
|
||
* 3.PC2--Motor / PC3--BZ
|
||
* 4.PA6/PA7 -- LEDS
|
||
**********************************************************/
|
||
```
|
||
* 函数使用块注释,类似如下
|
||
```c
|
||
/************
|
||
* 函数名称
|
||
* 函数描述
|
||
* 参数及返回值说明
|
||
* 注意事项
|
||
************/
|
||
```
|
||
* 句子用行注释,如下
|
||
```c
|
||
//这是一个注释
|
||
```
|
||
4. 数据格式
|
||
* 变量声明都按u8/u16/u32,s8/s16/s32格式
|
||
* 同类状态尽量按枚举类型定义,如
|
||
```c
|
||
enum U_SMS{SMS_WORK=0, SMS_CHARGE, SMS_SLEEP} flag;
|
||
```
|
||
* 同功能变量尽量定义结构体,便于管理和阅读
|
||
|
||
|