读书笔记---FreeRTOS的编译风格

 学习一个RTOS,弄清楚它的编程风格很重要,这可以大大提高我们阅读代码的效率(虽然我不太喜欢这种风格)。

1、数据类型

  FreeRTOS针对不同的处理器,对标准C的数据类型进行了重定义。在类型前一般加上port ,这里的port表示接口,在移植FreeRTOS到处理器上时,需要将这些接口文件把它们连接在一起。在FreeRTOS中,int型从不使用,只使用short 、long型。在corten-M内核的MCU中,short为16位,long为32位。

FreeRTOS中的数据类型重定义
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

 

 2、变量名

把变量的类型当作前缀加在变量上:

char型变量的前缀是c

short型变量的前缀是s

long型变量的前缀是l

portBASE_TYPE类型变量、数据结构、任务句柄、队列句柄等定义变量名前缀为x

如果变量是无符号的,前缀有一个u,如果是指针变量,则会有一个前缀p。

无符号的char型变量会加一个uc前缀

char型的指针变量会加一个pc的前缀。

 

 3、函数名

函数名包含了函数返回值的类型、函数所在的文件名和函数功能,如果是私有函数,则会加一个prv(private)的前缀。

1)vTaskPrioritySet()函数的返回值为void型,在task.c文件中定义。
2)xQueueReceive()函数的返回值为portBASE_TYPE型,在queue.c文件中定义。
3)vSemaphoreCreateBinary()函数的返回值为void型,在semphr.h文件中定义。

 

 4、宏

 由大写字母表示,并配有小写字母的前缀,前缀用于表示该宏在哪个头文件定义:

portMAX_DELAY   在文件 porttable.h 中定义

taskENTER_CRITIOAL()  在文件 task.h 中定义

pdTRUE  在文件  projdefs.h 中定义

 

 特别注意的是队列的定义,是按函数名规则 的

errQUEUE_FULL   是在 projdefs.h  中定义的

 还有几个通用的宏定义也要注意一下的:

pdTRUE    1

pdFALSE    0

pdPASS    1

pdFAIL     0

 

5、格式

  1个Tab键=4个空格

  当两个编译器的Tab键大小设置得不一样时,移植代码时会变乱。

 

上一篇:模块化CSS


下一篇:Technical support