FreeRTOS编程规范与数据类型

目录

一、参考文章

二、C语言(Keil)

三、FreeRTOS

1、数据类型

2、变量名

3、函数名

4、宏的名

5、通用的宏定义


一、参考文章

FreeRTOS编码标准与数据类型_freertos的编码规范-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/zppsky_123/article/details/131851019

freertos学习笔记1(数据类型,变量名,函数名和宏的命名,tab键和空格键)_freertos float参数命名-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/qq_34234087/article/details/108595377

二、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.hportmacro.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。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值