参考资料
野火的《FreeRTOS内核实现与应用开发实战指南》
数据类型
FreeRTOS对标准C的数据类型进行了重定义。给它们取了新的名字,比如portCHAR就是对char的重定义,port为接口的意思。在FreeRTOS中int型从不使用。是有short和long型。在Cortex—M内核CPU中,short为16位,long为32位。
FreeRTOS中数据类型重定义
| 新定义的数据类型 |实际数据类型(C标准类型) |
portCHAR | char |
---|---|
portSHORT | short |
portLONG | long |
portTickType | unsigned short int (用于定义系统时基计数器和阻塞时间的值。当FreeRTOSConfig.h头文件中宏configUSE_16_BIT_TICKS为1时则为16位) |
unsigned int (用于定义系统时基计数器和阻塞时间的值。当FreeRTOSConfig.h头文件中宏configUSE_16_BIT_TICKS为0时则为32位) | |
portBASE_TYPE | long(根据处理器的架构来决定多少位的。如果是32位处理器则是32位数据类型) |
FreeRTOS中数据类型重定义
#define portCHAR char
#define portFLOAt float
#define portDOUBLE double
#define portLONG long
#define portSHORT short
#define portSTACK_TYPE uint32_t
#define portBASE_TYPE long
typedef portSTACK_TYPE StackType_t;
typedef long Base_Type_t;
typedef unsigned long UBaseType_t;
#if(configUSE_16_BIT_TICK == 1)
typedef uint16_t TickType_t;
#define portMAX_DELAY (TickType_t) 0xffff
#else
typedef uint32_t Tick_Type_t;
#define portMAX_DELAY (TickType_t) 0xffffffffUL