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   阅读(535)   评论(0)
 标签: 创客 ESP32 FreeRTOS

涨知识
摩尔斯电码

摩尔斯电码(Morse code)也被称作摩斯密码,是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号。

评论:
相关文章
【ESP32 C++教程】Unit7-1:四位7段式数码管

本节主要讲解用TM1650来驱动四位7段式数码管模块的显示使用。


【ESP32 C++教程】Unit6-4:资源互斥访问

本节主要讲解FreeRTOS任务间如何使用互斥对象来实现资源互斥访问。


ESP32 Guru Meditation Error报错定位分析

在ESP32的开发,经常会有系统崩溃一直重启的情况,那么如何快速定位出现异常的代码呢?


【ESP32 C++教程】Unit6-3 FreeRTOS任务间通信

本节主要讲解FreeRTOS任务间如何使用消息队列、事件组和二进制信号量进行通信。


【ESP32 C++教程】Unit6-2 FreeRTOS多任务

本节主要讲解Task类,FreeRTOS多任务的使用。


【ESP32 C++教程】Unit6-1 定时器

本节主要讲解Timer类,FreeRTOS定时器的使用。


【ESP32 C++教程】Unit5-2 执行器件之舵机

本节主要讲解舵机驱动类和用按键控制舵机。


【ESP32 C++教程】Unit5-1 执行器件之继电器

本节主要讲解执行器件类型和用按键控制继电器。


【ESP32 C++教程】Unit4-3 红外接收和遥控

本小节主要讲解红外接收和遥控器件,以及遥控操作LED。


【ESP32 C++教程】Unit4-2 模拟量传感器

本小节讲解模拟量传感器使用,旋转电位器,DHT11温湿度传感器和实现自定义传感器类。