命名规范
- 变量名字应当是变量类型加上变量意义的英文
前缀符号 | 变量类型 |
---|---|
c | char |
s | short |
l | long |
x | portBASE_TYPE 类型、数据结构、任务句柄、队列句柄等定义的变量名的前缀也是 x |
p | 指针 |
u | 无符号数据 |
- 函数命名是 返回值的前缀+函数定义所在的文件+函数意义
函数名包含了函数返回值的类型、 函数所在的文件名和函数的功能,如果是私有的函
数则会加一个 prv(private) 的前缀。特别的, 在函数名中加入了函数所在的文件名, 这大
大的帮助了用户提高寻找函数定义的效率和了解函数作用的目的, 具体的举例如下:
- vTaskPrioritySet()函数的返回值为 void 型, 在 task.c 这个文件中定义。
- xQueueReceive()函数的返回值为 portBASE_TYPE 型, 在 queue.c 这个文件中定义。
- vSemaphoreCreateBinary()函数的返回值为 void 型, 在 semphr.h 这个文件中定义。
工程目录
- 一个的项目中应当包含以下文件夹
文件夹 | 含义 |
---|---|
HARDWARE | 外围设备驱动文件 |
PROJECT | 项目文件 |
user | 用户功能实现函数里面包含function.c(程序功能实现文件)、commen.c(函数实现文件,在多文件中被调用)、main.c(main()必须在这个文件中) |
OUTPUT | 输出文件存放的地址 |
善用枚举
- 在一个变量是某个范围内特定的某一个值时,应当使用枚举表示该变量而不是定义 00 01来表示该变量的值,这样会造成变量具体含义明确,你都不知道这个值代表的是什么意思 例如星期,如果其值是1、2、3完全不知道是周几。如果定义成一个枚举,看到变量的值就非常明确其含义了。
typedef enum
{
MONDAY=0,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY,
}WEEK_DAY;
善用结构体
- 定义结构体可以使得变量结构更加紧凑,可以更加优秀定义一个对象
- 结构体、枚举、宏定义定义名称都应当用大写字母和下换线,用来和变量区别
- eg:我们要表示一个正方体,如果2个定义结构体,我们需要定义的变量,变量多了会很混乱。
char cLength1;
char cHeight1;
char cHidth1;
char cLength2;
char cHeight2;
char cHidth2;
假如我们使用结构体,代码结构更加紧凑,含义也更加清晰
typedef struct{
char cLength;
char cHeight;
char cHidth;
}CUBE;
CUBE xCube1,xCube2;
注意:结构体的中的变量在内存中的地址有偏移的情况,可以看我的博文 关于内存对齐
左值和又值
- 不知道你么你在写代码过程中有没有出现吧 == 和=弄混淆的经历,反正我是有的。所以后来在判断变量的值是否等于某个值时候,我习惯吧变量放右边,因为某个确定的值是常量不能被修改,如果把 **==写成=**编译会报错
int a=5;
if(a==5);
if(5==a); //推荐这种用法,这样把==写成=的时候编译器会报错