ESP32-S3 PWM分辨率设置及代码修正

你的代码中ledcSetup()函数的PWM分辨率设置存在问题。在ESP32-S3上,PWM的分辨率只能是8位或10位,而你设置为2位是不正确的。

以下是修正后的代码:cpp#include <Arduino.h>

const int pwmPin = 2; // 选择一个PWM引脚,这里使用GPIO 2

void setup() { ledcAttachPin(pwmPin, 0); // 将PWM引脚连接到LED控制器0 ledcSetup(0, 1000, 8); // 设置LED控制器0,频率为1000Hz,分辨率为8位}

void loop() { // 生成自定义的PWM波形 ledcWrite(0, 128); // 占空比为50% ESP_LOGI('ESP32S3','ESP_LOGI'); delay(1000);}

代码解释:

  • 我们将ledcSetup()函数的第三个参数设置为8,即使用8位分辨率。* ledcWrite()函数用于设置占空比,这里设置为128,对应50%占空比。* 代码中使用ESP_LOGI()打印日志,确保你的开发板已配置好日志输出和串口设置。

通过修正后的代码,你就可以在ESP32-S3上正确生成自定义的PWM波形了。

注意:

  • 选择适合你应用场景的PWM分辨率。* 确保选择的GPIO引脚支持PWM功能。* 根据需要调整PWM频率和占空比。
ESP32-S3 PWM分辨率设置及代码修正

原文地址: https://www.cveoy.top/t/topic/iqi 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录