esp32与freertos学习

基础知识

前缀知识

核心前缀表

前缀含义示例代表类型
vvoid(无返回值)vTaskDelete()函数
x非void返回值xTaskCreate()函数/变量
pvpointer to void(void指针)pvParameters变量
pcpointer to char(字符指针)pcTaskName变量
pxpointer to X(特定类型指针)pxCurrentTCB变量
uxunsigned 整型uxPriority变量
cchar(字符类型)cRxChar变量
eenum(枚举类型)eTaskState变量
hhandle(句柄类型)hTask(TaskHandle_t别名)变量
prvprivate(私有类型)prvCheckTasksWaitingTermination()函数
pdbool类型,用于枚举pdTRUE/pdFALSE变量
puxpointer to unsigned short

特殊场景前缀

前缀组合含义示例
pvPort硬件端口相关pvPortMalloc()
xTimer软件定时器xTimerCreate()
xEvent事件组xEventGroupCreate()
xSem信号量xSemaphoreCreateBinary()
xQueue队列xQueueSend()
xStream流缓冲区xStreamBufferSend()

ESP-IDF扩展前缀

前缀含义示例
esp_乐鑫扩展APIesp_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的指针

所以在声明多个指针变量时,必须在每个变量名前加上星号。

ESP32FreeRTOS使用上传统的FreeRTOS有一些区别。在ESP32中,基本不需要单独配置FreeRTOSConfig.h文件,因为ESP-IDF中的menuconfig功能可以对所有涉及到的内容进行配置,使用起来更加直观和便利。主要的数据类型说明中,有一个重要的数据类型是TickType_t。 在ESP32的魔改版FreeRTOS中,很少使用正经的事件集,而是使用ESP-IDF提供的更方便的事件循环。这使得在ESP32中使用事件循环更加方便。 另外,ESP32的分区表是采用二进制格式而不是CSV文件。ESP-IDF提供了gen_esp32part.py工具来配置和构建分区表。默认情况下,使用的是默认分区表。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【ESP32+freeRTOS学习笔记-(一)freeRTOS介绍】](https://blog.youkuaiyun.com/weixin_45499326/article/details/128226443)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [ESPIDF开发ESP32学习笔记【ESP32上的FreeRTOS】](https://blog.youkuaiyun.com/qq_40500005/article/details/114794039)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值