Esp32 Arduino API参考 Help

ESP HAL

FreeRTOS

在esp-hal.h中提供rtos api的只是一部分,也只是封装了idf api,也直接可以使用idf中的rtos api。

  • void vPortYield(void); 当前线程会让出当前 CPU 的使用权,让优先级更高的任务得到执行。

  • void yield(void); 同上

  • optimistic_yield(u)

  • 启用0核看门狗 void enableCore0WDT();

  • 禁用0核看门狗 void disableCore0WDT();

  • 启用1核看门狗 void enableCore1WDT();

  • 禁用1核看门狗 void disableCore1WDT();

  • xTaskCreateUniversal

BaseType_t xTaskCreateUniversal( TaskFunction_t pxTaskCode, const char * const pcName, const uint32_t usStackDepth, void * const pvParameters, UBaseType_t uxPriority, TaskHandle_t * const pxCreatedTask, const BaseType_t xCoreID );

创建一个任务,可以适应arduino下单核或者多核,在CONFIG_FREERTOS_UNICORE为1时, 会忽略xCoreID ,使用xTaskCreate否则使用xTaskCreatePinnedToCore

寄存器

  • ESP_REG 可以读写寄存器。 GPIO状态使用示例: ESP_REG(GPIO_IN_REG) 当然在soc.h也提供类似功能。以下是一个使用寄存器点合宙c3两个板载LED灯的示例:

#include <Arduino.h> // 将12 13号引脚放到到同一个MASK里面 #define LEDS (BIT(12) | BIT(13)) void setup() { REG_WRITE(GPIO_ENABLE_W1TS_REG, LEDS); } void loop() { REG_WRITE(GPIO_OUT_W1TC_REG, LEDS); log_i("GPIO_IN_REG %s", String(ESP_REG(GPIO_IN_REG), 2).c_str()); delay(1000); ESP_REG(GPIO_OUT_W1TS_REG) |= LEDS; log_i("GPIO_IN_REG %s", String(ESP_REG(GPIO_IN_REG), 2).c_str()); delay(1000); }

这里同时提供ESP_REGREG_WRITE操作引脚的示例。

由于存在无USB转串口芯片版本,这里打开日志,则不需要关注串口是否是虚拟。 配置如下:

[env:esp32c3] platform = espressif32 board = airm2m_core_esp32c3 framework = arduino upload_speed = 921600 monitor_filters = direct build_flags = -D CORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_INFO -D CONFIG_ARDUHAL_LOG_COLORS=1

arduino loop看门狗

  • 启用loop看门狗 void enableLoopWDT();

  • 禁用loop看门狗 void disableLoopWDT();

  • loop任务喂狗 void feedLoopWDT();

Last modified: 17 十一月 2024