在 PlatformIO/Arduino 上使用 ESP-IDF LEDC API 的 ESP32 最小 LEDC PWM 配置示例

此示例将 LEDC PWM 定时器配置为 10 kHz,12 位分辨率,在 IO14 上输出 50% 占空比 PWM。此代码直接使用 ESP-IDF API 来配置 PWM

esp32-minimal-ledc-pwm-configuration-example.cpp
#include <Arduino.h>
#include <driver/ledc.h>

void setup() {
    Serial.begin(115200);

    ledc_timer_config_t ledc_timer = {
        .speed_mode       = LEDC_HIGH_SPEED_MODE,
        .duty_resolution  = LEDC_TIMER_12_BIT,
        .timer_num        = LEDC_TIMER_0,
        .freq_hz          = 10000,
        .clk_cfg          = LEDC_AUTO_CLK
    };
    ESP_ERROR_CHECK(ledc_timer_config(&ledc_timer));

    ledc_channel_config_t ledc_channel = {
        .gpio_num       = GPIO_NUM_14,
        .speed_mode     = LEDC_HIGH_SPEED_MODE,
        .channel        = LEDC_CHANNEL_0,
        .intr_type      = LEDC_INTR_DISABLE,
        .timer_sel      = LEDC_TIMER_0,
        .duty           = 2048, // 设置占空比为 50%
        .hpoint         = 0
    };
    ESP_ERROR_CHECK(ledc_channel_config(&ledc_channel));
}

void loop() {
}

Check out similar posts by category: Arduino, ESP8266/ESP32, PlatformIO