ESP32 FreeRTOS的常用API

ESP32 FreeRTOS的常用API

任务管理

1.创建任务

  • xTaskCreate() 或 xTaskCreateStatic():创建动态或静态任务。
  • xTaskCreatePinnedToCore():创建任务并将其固定在指定的核心上运行。

2.任务属性与状态

  • vTaskPrioritySet():更改任务优先级。
  • uxTaskPriorityGet():获取任务当前优先级。
  • vTaskDelete():删除指定任务。
  • eTaskGetState():获取任务状态(如运行、挂起、删除等)。
  • uxTaskGetStackHighWaterMark():获取任务堆栈使用峰值,用于监控堆栈使用情况。

3.任务同步与通信

消息队列
  • xQueueCreate():创建消息队列。
  • xQueueSend(), xQueueReceive(): 向队列发送或从队列接收消息。
  • xQueueSendToFront(), xQueueSendToBack(), xQueuePeek(): 其他队列操作函数。
事件组
  • xEventGroupCreate():创建事件组。
  • xEventGroupWaitBits(), xEventGroupSetBits(), xEventGroupClearBits(): 等待、设置或清除事件组中的位。
互斥锁
  • xSemaphoreCreateMutex():创建互斥锁。
  • xSemaphoreTake(), xSemaphoreGive(): 上锁(获取)或解锁(释放)互斥锁。
  • xSemaphoreGiveRecursive(), xSemaphoreTakeRecursive(): 递归互斥锁的锁定与解锁。
信号量
  • xSemaphoreCreateBinary(),xSemaphoreCreateCounting(): 创建二值信号量或计数信号量。
  • xSemaphoreGive(), xSemaphoreTake(): 释放或获取信号量。
  • xSemaphoreGiveFromISR(), xSemaphoreTakeFromISR(): 从ISR中安全地释放或获取信号量。

时间管理:

1.延时与超时

  • vTaskDelay():以RTOS tick为单位延时。
  • vTaskDelayUntil():基于上次调用时间进行周期性延时。
  • ulTaskNotifyTake(),ulTaskNotifyTakeIndexed():等待任务通知,可指定超时时间。
  • vTaskNotifyGiveIndexed():向指定索引的任务发送通知。

2.定时器

  • xTimerCreate():创建软件定时器。
  • xTimerStart(), xTimerStop(), xTimerReset(): 启动、停止或重置定时器。
  • xTimerChangePeriod(): 更改定时器周期。
  • xTimerIsTimerActive(): 检查定时器是否处于活动状态。

内存管理:

1.动态内存

  • pvPortMalloc():分配内存。
  • vPortFree():释放内存。
  • heap_caps_malloc(), heap_caps_free(): 分配或释放具有特定属性(如IRAM、DRAM)的内存。
  • heap_caps_get_info(): 获取堆信息。

系统控制与查询:

1.系统启动与状态

  • vTaskStartScheduler():启动RTOS调度器。
  • xTaskGetTickCount():获取自RTOS启动以来的tick数。
  • xPortGetCoreID():获取当前运行任务所在的CPU核心ID。

2.中断管理

  • vPortEnterCritical(), vPortExitCritical(): 关闭/恢复中断,实现临界区保护。
  • taskENTER_CRITICAL(), taskEXIT_CRITICAL(): 同上,使用FreeRTOS宏。

其他辅助功能:

1.任务通知

  • vTaskNotifyGive():向任务发送通知,增加任务通知值。
  • vTaskNotifyGiveFromISR():从ISR中安全地向任务发送通知。
  • xTaskNotifyWait():等待并清除任务通知。

2.任务钩子函数

  • vApplicationIdleHook(): 空闲任务钩子函数,用于在空闲任务循环中执行额外操作。
  • vApplicationTickHook(): 时钟节拍钩子函数,每次tick发生时调用。
- 本文内容来自网络,如有侵权,请联系本站处理。

2024-09   阅读(42)   评论(0)
 标签: 创客 ESP32 FreeRTOS

涨知识
步进电机

步进电机是将电脉冲信号,转变为角位移或线位移的开环控制电机,又称为脉冲电机。

评论:
相关文章
Arduino-ESP32与ESP-IDF的版本对应表

Arduino-ESP32与ESP-IDF的版本对应表。


Arduino-ESP32文件系统全解析:SPIFFS、LittleFS、SD卡操作

Arduino-ESP32提供了多种文件系统解决方案,本文将深入解析SPIFFS、LittleFS和SD卡三种主流存储方案,帮助你做出最佳选择。


ESP32-P4-WIFI6开发板

ESP32-P4-WIFI6-DEV-KIT是一款微雪(Waveshare)设计的基于 ESP32-P4 的多媒体开发板,并集成 ESP32-C6,支持 Wi-Fi 6 和 BLE 5 无线连接。它提供丰富的人机交互接口,包括 MIPI-CSI (集成图像信号处理器 ISP)、MIPI-DSI、SPI、I2S、I2C、LED PWM、MCPWM、RMT、ADC、UART 和 TWAI 等。


ESP-Hosted 入门介绍 &使用指南

ESP-Hosted 解决方案提供了将 ESP 板用作 Wi-Fi 和 Bluetooth/BLE 连接的通信处理器的方法。


设备上云太麻烦?ESP-Hosted一站触达!

ESP-Hosted 提供了一种将ESP芯片和模组用作通信协处理器的解决方案,该解决方案为主机微处理器或微控制器提供无线连接,使主机能够与其他设备通信。简单来说为网卡方案。


ESP32 + Arduino使用TFT_eSPI库

Arduino+ESP32上使用TFT_eSPI库快速点亮这个屏幕,驱动芯片ST7789


ESP32 利用 SPI 连通 TFT 彩屏

本文给出了一个ESP32与SPI 接口TFT显示屏接线的详细说明,供大家参考。


在Micropython下使用ESPNow功能进行数据传输

本文讲解如何在Micropython环境下使用ESP32的ESPNow功能进行数据传输。


用 ESP32-S3 打造多功能 USB Dongle

ESP-Dongle 是一款基于 ESP32-S3 芯片开发的多功能 USB Device 解决方案。它不仅外形小巧,功能齐全,更集成了无线 U 盘、SD 卡读取以及 USB 无线网卡等多项功能。


利用 ESP32-S3 和 CSI 技术打造智能家居

ESP32 系列芯片可以利用 CSI 数据实现动作检测和存在检测。无论是自动调节灯光、风扇,还是节能控制,CSI 技术为智能家居带来了新的可能性。随着 CSI 技术的发展,未来的智能家居将能够更精确地感知和响应我们的行为,实现更高效、更人性化的控制。