附录 1: 数据类型和编程风格指南

数据类型

每个移植 FreeRTOS 的实例都有一个唯一的 portmacro.h 头文件,其中包含两种特殊数据类型(TickType_tBaseType_t)的定义。表 3 中描述了这些数据类型。

表3. FreeRTOS 使用的特殊数据类型

使用宏或类型定义

实际类型

TickType_t

这用于存储 tick 计数值,以及用于指定阻塞时间的变量。

TickType_t可以是无符号 16 位类型或无符号 32 位类型,具体取决于FreeRTOSConfig.hconfigUSE_16_BIT_TICKS 的设置。

使用 16 位类型可以极大地提高 8 位和 16 位架构的效率,但严重限制了可以指定的最大阻塞周期。 没有理由在 32 位架构上使用 16 位类型。

BaseType_t

这始终被定义为架构的最有效数据类型。 通常,这是 32 位架构上的 32 位类型,16 位架构上的 16 位类型和 8 位架构上的 8 位类型。

BaseType_t 通常用于只能采用非常有限的值范围的变量,以及布尔值。

不使用 char 以外的标准数据类型(见下文),而是使用编译器的 stdint.h 头文件中定义的类型名称。 char 类型仅允许指向 ASCII 字符串或引用单个 ASCII 字符。

变量名

变量的前缀是它们的类型:c 表示 chars 表示 shortl 表示 longx 表示 BaseType_t 和任何其他类型(结构,任务句柄,队列句柄等)。如果变量是无符号的,它也带有 u 前缀。 如果变量是指针,则它也带有 p 前缀。 因此,unsigned char 类型的变量将以 uc 为前缀,而指向 char 的类型指针的变量将以 pc 为前缀。

最后更新于