附录 1: 数据类型和编程风格指南
最后更新于
最后更新于
每个移植 FreeRTOS 的实例都有一个唯一的 portmacro.h
头文件,其中包含两种特殊数据类型(TickType_t
和 BaseType_t
)的定义。表 3 中描述了这些数据类型。
表3. FreeRTOS 使用的特殊数据类型
不使用 char
以外的标准数据类型(见下文),而是使用编译器的 stdint.h
头文件中定义的类型名称。 char
类型仅允许指向 ASCII 字符串或引用单个 ASCII 字符。
变量的前缀是它们的类型:c
表示 char
,s
表示 short
,l
表示 long
,x
表示 BaseType_t
和任何其他类型(结构,任务句柄,队列句柄等)。如果变量是无符号的,它也带有 u
前缀。 如果变量是指针,则它也带有 p
前缀。 因此,unsigned char
类型的变量将以 uc
为前缀,而指向 char
的类型指针的变量将以 pc
为前缀。
使用宏或类型定义
实际类型
TickType_t
这用于存储 tick 计数值,以及用于指定阻塞时间的变量。
TickType_t
可以是无符号 16 位类型或无符号 32 位类型,具体取决于FreeRTOSConfig.h
中 configUSE_16_BIT_TICKS
的设置。
使用 16 位类型可以极大地提高 8 位和 16 位架构的效率,但严重限制了可以指定的最大阻塞周期。 没有理由在 32 位架构上使用 16 位类型。
BaseType_t
这始终被定义为架构的最有效数据类型。 通常,这是 32 位架构上的 32 位类型,16 位架构上的 16 位类型和 8 位架构上的 8 位类型。
BaseType_t
通常用于只能采用非常有限的值范围的变量,以及布尔值。