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

涨知识
递归

递归简单点来说,就是一个函数直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。

评论:
相关文章
MimiClaw应用与开发教程1:部署和测试

MimiClaw‌ 是一款基于 ‌ESP32-S3‌ 芯片的超轻量级AI助手,适合嵌入式AI与物联网开发者快速部署本地化AI代理。本系列教程基于MimiClaw的Arduino移植版本进行讲解,小节主要讲解部署和测试。


ESP32扫描wifi 热点列表

就像我们用手机打开WiFi功能后可以浏览附近的可用WiFi。要将手机连接到热点,通常需要打开Wi-Fi设置应用程序,列出可用的网络,然后选择所需的热点。然后输入密码(或不输入密码),可以使用ESP32进行相同的操作。


MimiClaw 配置飞书机器人和添加硬件控制技能

本文本介绍配置飞书机器人为MimiClaw的一个输入/输出端,和添加一个控制WS2812与LED的控制技能。


ESP32-S3 部署 MimicLaw 完整教程:从零到成功调用 DeepSeek

一块 30 块钱的开发板 + 一个大模型 API,就能做出可以听懂人话的智能硬件。 本文记录完整安装过程和踩坑经验,确保你跟着做就能跑通。


MimiClaw 架构全解析,把 “智能龙虾” 跑在 ESP32 上

本文将从手绘架构图入手,逐层拆解 MimiClaw 的分层设计、核心模块、数据流转与底层实现,带你解剖这只“智能虾”的技术骨架,看懂在 C 语言加持下,AI 智能体如何以可穿戴设备的形态,在你身边稳稳运行、离线服务、主动响应。


如何用 platform.local.txt 深度定制 ESP32 编译流程?

本文介绍如何在不脱离 ArduinoIDE 可视化开发的前提下,通过一个名为 platform.local.txt 的小文件,实现对 ESP32 编译流程的精准控制。


优化Arduino-ESP32程序体积

本文将系统分析程序体积增长的五大根源,并提供经过验证的优化方案,帮助减小固件大小。


开发ESP32大模型AI语音助手-从软件到硬件

本文所DIY的语音助手设备端使用的是MicroPython、服务端是Python,对于很多开发者来说MicroPython入门没难度。


【ESP32 C++教程】Unit10-2:音频录制

本小节使用音频开发框架实现一个音频录制到文件的示例。


ESP32 I2S 接口深度解析:从时序、格式到 ESP-IDF 驱动实战

I2S协议通过BCLK、LRCLK和DATA三线精准传输音频数据,但时序边沿、帧格式、时钟源等细节常引发噪声或断连。本文详解ESP32的I2S实现,从协议原理到ESP-IDF v5.x代码配置,助你避开常见陷阱,确保音频稳定传输。