基础知识
前缀知识
核心前缀表
| 前缀 | 含义 | 示例 | 代表类型 |
|---|---|---|---|
| v | void(无返回值) | vTaskDelete() | 函数 |
| x | 非void返回值 | xTaskCreate() | 函数/变量 |
| pv | pointer to void(void指针) | pvParameters | 变量 |
| pc | pointer to char(字符指针) | pcTaskName | 变量 |
| px | pointer to X(特定类型指针) | pxCurrentTCB | 变量 |
| ux | unsigned 整型 | uxPriority | 变量 |
| c | char(字符类型) | cRxChar | 变量 |
| e | enum(枚举类型) | eTaskState | 变量 |
| h | handle(句柄类型) | hTask(TaskHandle_t别名) | 变量 |
| prv | private(私有类型) | prvCheckTasksWaitingTermination() | 函数 |
| pd | bool类型,用于枚举 | pdTRUE/pdFALSE | 变量 |
| pux | pointer to unsigned short |
特殊场景前缀
| 前缀组合 | 含义 | 示例 |
|---|---|---|
| pvPort | 硬件端口相关 | pvPortMalloc() |
| xTimer | 软件定时器 | xTimerCreate() |
| xEvent | 事件组 | xEventGroupCreate() |
| xSem | 信号量 | xSemaphoreCreateBinary() |
| xQueue | 队列 | xQueueSend() |
| xStream | 流缓冲区 | xStreamBufferSend() |
ESP-IDF扩展前缀
| 前缀 | 含义 | 示例 |
|---|---|---|
| esp_ | 乐鑫扩展API | esp_register_freertos_tick_hook() |
| ESP_ | 乐鑫宏定义 | ESP_TASK_PRIO_MAX |
| ulp_ | 超低功耗协处理器 | ulp_load_binary() |
| rtc_ | 实时时钟模块 | rtc_clk_cpu_freq_get() |
函数
1.特定前缀
prv前缀:一般为文件作用域范围的函数
API函数的前缀为它们的返回类型,当返回为空时,前缀为v
2.函数一般组成
返回值类型+所在文件+功能名称。
例子:
vTaskDelete:返回值为void,定义在tasks.c,作用是delete。
宏
1.宏的名字的起始部分为该宏定义所在文件名的一部分。
除了前缀,宏剩下的字母全部为大写,两个单词间用下划线(‘_’)隔开
比如:
configUSE_PREEMPTION表示定义在FreeRTOSConfig.h文件中,作用是USE_PREEMPTION.
四种数据类型
1 TickType_t
TickType_t是一个无符号整数类型,通常用来表示系统节拍计数器的值。TickType_t类型的变量记录了系统过去的节拍次数。
若用户使能了宏定义configUSE_16_BIT_TICKS,那代表的是16为无符号数
若用户没有使能,那其代表的是32为无符号数。
对于32为架构的处理器,一定要禁止此宏定义,即设置此宏定义数值为0即可。
2 BaseType_t
BaseType_t是一个有符号整数类型,它是FreeRTOS中其他类型的返回值类型,表示操作的成功或失败,在大数情况下,它的值为pdTURE或者pdFALSE。
对于32位架构,BaseType_t定义的是32位有符号数
对于16位架构,BaseType_t定义的是16位有符号数
如果BaseType_t被定义成了char型,要将其设置为有符号数,因为部分函数的返回值是用负数来表示错误类型。
3 UBaseType_t
这是BaseTypt_t的有符号版本。
4 StackType_t
栈变量数据类型定义
对于32位系统架构,其定义的是32位变量
对于16位系统架构,其定义的是16位变量
其他需要注意的地方
1.void* pvParameters vs void *pvParameters
两者是完全等价的,没有区别,这是因为在C语言中,空格在指针声明的星号前后是自由的,编译器会忽略这些空格。
但在声明多个指针变量时,必须在每个变量名前加上星号。
void* p1,p2;//这个连续赋值会编译错误,p2会变成void类型的变量,但void不能作为变量类型
void *p1,*p2;//这里p1,p2都是指向void的指针
所以在声明多个指针变量时,必须在每个变量名前加上星号。
8573

被折叠的 条评论
为什么被折叠?



