官方的参考链接:https://docs.espressif.com/projects/arduino-esp32/en/latest/api/ledc.html
在3.x的版本中删除了一下函数
-
ledcSetup
-
ledcAttachPin
现在输出一个PWM波形的方法如下:
ledcAttach
此功能用于设置 LEDC 引脚的给定频率和分辨率。LEDC 通道将自动选择。
bool ledcAttach(uint8_t pin, uint32_t freq, uint8_t resolution);
/*
·pin选择 LEDC 引脚。
·freq选择 pwm 的频率。
·resolution选择LEDC通道的分辨率。范围是 1-14 位(ESP32 为 1-20 位)。
·true如果配置成功,此函数将返回。如果false返回,则发生错误,LEDC 通道未配置。
*/
ledcWrite
该函数用于设置 LEDC 引脚的占空比
bool ledcWrite(uint8_t pin, uint32_t duty);
/*
·pin选择 LEDC 引脚。
·duty选择要为选定的 LEDC 引脚设置的占空比。
·true如果设置占空比成功,此函数将返回。如果false返回,则发生错误,并且未设置占空比。
*/
完整代码如下:
#define PIN 1
#define BASE_FREQ 5000
#define LEDC_TIMER_12_BIT 12
void setup() {
//ledc的通道会自行分配,这里只要GPIO、频率、分辨率就行了
ledcAttach(PIN , BASE_FREQ, LEDC_TIMER_12_BIT);
ledcWrite(PIN , 0);
ledcWrite(PIN , 200);
}