ESP32 минимальный пример конфигурации LEDC PWM на PlatformIO/Arduino с использованием ESP-IDF LEDC API

Этот пример настраивает LEDC PWM-таймер на 10 кГц с 12-битным разрешением, выводя PWM с 50% скважностью на IO14. Этот код использует 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, // Set duty to 50%
        .hpoint         = 0
    };
    ESP_ERROR_CHECK(ledc_channel_config(&ledc_channel));
}

void loop() {
}

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