目录
一、参考文章
FreeRTOS编码标准与数据类型_freertos的编码规范-CSDN博客https://blog.csdn.net/zppsky_123/article/details/131851019
二、C语言(Keil)
long与int32_t,unsigned long与 uint32_t表示范围一样。
后缀_t的意思是type的意思。
三、FreeRTOS
1、数据类型
FreeRTOS 主要自定义了以下四种数据类型:
- TickType_t:configUSE_16_BIT_TICKS为1时为16位无符号数(uint16_t),configUSE_16_BIT_TICKS为0时为32位无符号数(uint32_t)。
- BaseType_t:根据处理器的架构决定是多少位,如果是32/16/8的架构,则是int3216/8_t的数据类型。
- UBaseType_t:是 BaseType_t 类型的无符号版本(unsigned)。
- StackType_t:栈变量数据类型定义,根据处理器的架构决定是多少位,如果是32/16的架构由系统架构决定,则是uint32/16_t的数据类型。
此外,FreeRTOS对标准 C 的数据类型又进行了重定义(port 表示接口的意思),就是 FreeRTOS 要移植到这些处理器上需要这些接口文件来把它们连接在一起。
- portSTACK_TYPE: configUSE_16_BIT_TICKS为1时为16位无符号数(uint16_t),configUSE_16_BIT_TICKS为0时为32位无符号数(uint32_t)。
- portBASE_TYPE:根据处理器的架构决定是多少位,如果是32/16/8的架构,则是int32/16/8的数据类型。
可以发现,StackType_t与portSTACK_TYPE类似,BaseType_t与portBASE_TYPE相似。
2、变量名
在 FreeRTOS 中,定义变量的时候往往会把变量的类型当作前缀加在变量上,这样的好处是让用户一看到这个变量就知道该变量的类型。
- uint32_t 定义的变量都加上前缀 ul。 u 代表 unsigned 无符号, l 代表 long 长整型。
- uint16_t 定义的变量都加上前缀 us。 u 代表 unsigned 无符号, s 代表 short 短整型。
- uint8_t 定义的变量都加上前缀 uc。 u 代表 unsigned 无符号, c 代表 char 字符型。
- stdint.h 文件中未定义的变量类型,在定义变量时需要加上前缀 x,比如 BaseType_t 和 TickType_t 定义的变量。还有其他的数据类型,比如数据结构,任务句柄,队列句柄等定义的变量名的前缀也是 x。
- stdint.h 文件中未定义的无符号变量类型,在定义变量时要加上前缀 u, 比如 UBaseType_t 定义的变量要加上前缀 ux。size_t 定义的变量也要加上前缀 ux。
- 枚举变量会加上前缀 e。
- 指针变量会加上前缀 p,比如 uint16_t 定义的指针变量会加上前缀 pus。
- 根据 MISRA 代码规则, char 定义的变量只能用于 ASCII 字符,前缀使用 c。
- 根据 MISRA 代码规则, char *定义的指针变量只能用于 ASCII 字符串, 前缀使用 pc。
3、函数名
在 FreeRTOS 中,函数名包含了函数返回值的类型、 函数所在的文件名和函数的功能,方便用户寻找函数在哪里以及了解函数的作用。
- vTaskPrioritySet : 返回值的类型是void,在task.c中定义。
- xQueueReceive: 返回值的类型是BaseType_t,在queue.c中定义。
- pvTimerGetTimerID:返回值的类型是pointer to void,在timer.c中定义。
- 如果是私有的函数则会加一个 prv(private) 的前缀。加上了 static 声明的函数则是私有的函数, 定义时要加上前缀 prv,例如prvProcessReceivedCommands。
4、宏的名
在 FreeRTOS 中,大写字母是宏的名字,小写字母是前缀。前缀是用来表示:宏在哪个文件中定义,方便用户寻找宏。
- port (比如portMAX_DELAY): 定义在portable.h或portmacro.h。
- task (比如taskENTER_CRITICAL()) : 定义task.h。
- pd (比如pdTRUE): 定义在projdefs.h。
- config (比如configUSE_PREEMPTION) :定义在FreeRTOSConfig.h。
- err (比如errQUEUE_FULL) : 定义在projdefs.h 。
5、通用的宏定义
在 FreeRTOS 中,经常可以看到以下几个宏,pd表示定义在projdefs.h 文件中。
- pdFALSE: ( ( BaseType_t ) 0 ),就是0,其中BaseType_t是32位有符号数(long)。
- pdTRUE : ( ( BaseType_t ) 1 ),就是1。
- pdPASS: ( pdTRUE ),就是1。
- pdFAIL : ( pdFALSE ),就是0。