1,公司代码风格统一,方便维护,切忌修改第三方代码风格。
2,切忌对第三方代码封装
3,TAB缩进4个空格
4,注释使用/**/风格,切忌使用//
5,if、switch、case、for、do、while 关键字后面加空格
6,定义指针类型* 靠近函数名、变量名一侧
int *a
7,二元、三元操作符两侧都加空格
= + - > < */ % | & ^ <= >= == != ? :
8,一元操作符后面不加要空格
~ ! siezeof typeof
9,++ -- 后面不加空格
10、. ->结构体成员操作后面不加空格
11、/* 注释 */ 两边就空格
12、文件信息注释
/**
******************************************************************************
* @file delay.c
* @author water
* @version V1.0
* @date 2020-03-12
* @brief 串口初始化代码(一般是串口 1)
* @copyright Copyright (c) 2020-2032, xxx有限公司
******************************************************************************
* @attention
*
* 硬件平台:xxxx
*
* 修改说明
* V1.0 20200312
* 第一次发布
*
******************************************************************************
*/
13、函数注释
函数注释包括:
参数简要说明(
@brief
)
参数说明(
@param
)
参量列表说明(
@arg
)
注释说明(
@note
)
返回值说明(
@retval
)
/**
* @brief GPIO 通用设置
* @param p_gpiox: GPIOA~GPIOK, GPIO 指针
* @param pinx: 0X0000~0XFFFF, 引脚位置, 每个位代表一个 IO,
* 第 0 位代表 Px0, 第 1 位代表 Px1, 依次类推.
* 比如 0X0101, 代表同时设置 Px0 和 Px8.
* @arg SYS_GPIO_PIN0~SYS_GPIO_PIN15, 1<<0 ~ 1<<15
*
* @param mode: 0~3; 模式选择, 设置如下:
* @arg SYS_GPIO_MODE_IN, 0, 输入模式(系统复位默认状态)
* @arg SYS_GPIO_MODE_OUT, 1, 输出模式
* @arg SYS_GPIO_MODE_AF, 2, 复用功能模式
* @arg SYS_GPIO_MODE_AIN, 3, 模拟输入模式
*
* @param otype:0~3; 输出类型选择, 设置如下:
* @arg SYS_GPIO_MODE_IN, 0, 输入模式(系统复位默认状态)
* @arg SYS_GPIO_MODE_OUT, 1, 输出模式
* @arg SYS_GPIO_MODE_AF, 2, 复用功能模式
* @arg SYS_GPIO_MODE_AIN, 3, 模拟输入模式
*
* @param ospeed:0~3; 输出速度, 设置如下:
* @arg SYS_GPIO_SPEED_LOW, 0, 低速
* @arg SYS_GPIO_SPEED_MID, 1, 中速
* @arg SYS_GPIO_SPEED_FAST, 2, 快速
* @arg SYS_GPIO_SPEED_HIGH, 3, 高速
*
* @param pupd:0~3: 上下拉设置, 设置如下:
* @arg SYS_GPIO_PUPD_NONE, 0, 不带上下拉
* @arg SYS_GPIO_PUPD_PU, 1, 上拉
* @arg SYS_GPIO_PUPD_PD, 2, 下拉
* @arg SYS_GPIO_PUPD_RES, 3, 保留
*
* @note: 注意: 在输入模式(普通输入/模拟输入)下, OTYPE 和 OSPEED 参数无效!!
* @retval 无
*/
void sys_gpio_set(GPIO_TypeDef *p_gpiox, uint16_t pinx, uint32_t mode, uint32_t otype,
uint32_t ospeed, uint32_t pupd)
{
uint32_t pinpos = 0, pos = 0, curpin = 0;
…… /* 省略代码 */
}
14、文件命名
采用小写
15、变量/函数命名
采用小写+ 下划线
16、宏命名
大写
17、对函数参数做合法性检查
18、函数的错误用返回值表示
19、static
表示函数或变量私有化,仅在当前文件或函数内使用,避免与其他文件冲突
20、int num=a?4:3;
/* 较好的初始化:?:减少数据流和控制流的混合 */
21、函数宏命名 :一定要使用 do{ }while(0)的
#define USART_UX_CLK_ENABLE() do{ RCC->APB2ENR |= 1 << 4; } while(0)