当我们接触一个新平台或者SDK,弄明白它的编码规范和文件作用,可以提高源码阅读效率,快速熟悉其内部实现。
3.2.1 数据类型
FreeRTOS针对不同的处理器,对标准C的数据类型进行了重定义。
1. #define portCHAR char
2. #define portFLOAT float
3. #define portDOUBLE double
4. #define portLONG long
5. #define portSHORT short
6. #define portSTACK_TYPE uint32_t
7. #define portBASE_TYPE long
应用编码中,推荐使用的是下面这种风格。
1. typedef int int32_t;
2. typedef short int16_t;
3. typedef char int8_t;
4. typedef unsigned int uint32_t;
5. typedef unsigned short uint16_t;
6. typedef unsigned char uint8_t;
3.2.2 变量名
FreeRTOS 中,定义变量的时候往往会把变量的类型当作前缀,好处看到就知道其类型。
char 型变量的前缀是 c
short 型变量的前缀是 s
long 型变量的前缀是 l
复杂的结构体,句柄等定义的变量名的前缀是 x
变量是无符号型的再加前缀 u,是指针变量则加前缀 p
3.2.3 函数名
函数名包含了函数返回值的类型、函数所在的文件名和函数的功能,如果是私有的函数则会加一个 prv(private)的前缀。
例如vTaskPrioritySet()函数的返回值为 void 型,在 task.c 这个文件中定义。
3.2.4 宏
宏内容是由大写字母表示,前缀是小写字母,表示该宏在哪个头文件定义,如:
1. #define taskYIELD() portYIELD()
表示该宏是在task.h。