1 Star 1 Fork 0

JIAMING/easyio-lib-for-esp32

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
01_blink
02_ledBlink
03_easyio_led
04_GPIO_IN_OUT
05_Task
06_GPIO_INTR
07_GPIO_INTR_Queue
08_KEY
09_TouchPad
10_LEDc_PWM
.vscode
components/easyio_lib
main
CMakeLists.txt
Makefile
README.md
sdkconfig
11_ADC
12_DAC
13_MCPWM_DC_MOTOR
14_MCPWM_HALF_BRIDGE
15_MCPWM_SERVO
16_MCPWM_CAPTURE_2Timer6IO
17_PCNT_Encoder
18_RMT_IR_RX
19_RMT_IR_RX_TX
20_RMT_1WIRE_WS2812B
21_UART1_TX_RX
22_UART0_TX_RX_QUEUE
23_UART0_TX_RX_QUEUE_PATTERN
24_UART1_RS485_FLOWCON
25_I2C_TOOLS
26_I2C_MPU6050
27_I2C_AHT20
27x1_I2C_SHT30
27x2_I2C_PCF8563_RTC
28_SPI_LCD_ILI9341_9488_9481_ST7735_7789_7796_HX8357C
29_SPI_AS5047P
30_SPI_TLE5012B
31_SPI_LCD_I2C_TOUCH_CTP
32_NVS
33_FATFS_SD_CARD_VFS
34_FATFS_SD_CARD_LCD
35_JPG_LCD_DMA
35x_JPG_LCD_DMA_time
36_JPG_LCD_DMA_EFFECT
37_JPG_LCD_DMA_SD_PHOTO_ALBUM
38_WIFI_station
39_WIFI_softAP
40_WIFI_tcp_client
41_WIFI_tcp_server
42_WIFI_udp_client
43_WIFI_udp_server
44_WIFI_http_request
45_WIFI_http_request_weather_cjson
46_WIFI_http_request_weather_cjson_free_15days
47_WIFI_MQTT
48_mbedtls_sha1_md5_AES_HmacSha1_base64
49_WIFI_MQTT_Aliyun_IOT_Platform
50_WIFI_SNTP_DeepSleep
51_WIFI_Scan
52_WIFI_SmartConfig_EspTouch_AirKiss
53_Blufi
54_ETH_DHCP
easyio_lib
image
BOM_PCB_ESP32-DEV_rev0.html
Q群827686418.png
README.md
Schematic_ESP32-IOT-KIT_2022-01-16.pdf
cleanBuild.bat
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

10_LEDc_PWM

例程简介

使用 FreeRTOSTask,创建两个任务:

  1. ledc_pwm_hs_rgb3ch_task ,使用高速ledc通道,控制RGB-LED呼吸渐变

  2. ledc_pwm_ls_led1ch_task ,使用低速ledc通道,控制单色LED以固定占空比输出

使用 ledc_pwm.c.h 驱动模块,来对ESP32的 led control 进行配置

鉴于数据手册对 led control 的说明很少,不建议了解具体硬件细节,直接使用easyio封装好的函数去调用。

【注意】:因开发板仅板载1个用户LED,此例程纵使可以演示众多GPIO的输出,但在开发板上仅能显示1个。

硬件连接

LED
ESP32 GPIO33

例程中使用了3通道高速LEDc、1通道低速LEDc,如需修改通道数目、GPIO请修改 ledc_pwm.h

运行现象

  • LED 呼吸渐变,并有串口信息输出。

  • 单色LED 分别输出0%、50%、100%占空比,并有串口信息输出。

  • 观察示波器,以上IO口的PWM频率均为5KHz。但由于没有使用同一定时器,所以跳变沿时序不一致。

学习内容

  1. 鉴于数据手册对 led control 的说明很少,不建议了解具体硬件细节,直接使用easyio封装好的函数去调用。

关键函数

// 初始化高速ledc通道,5KHz,13Bit分辨率,共使用3个通道,对应RGB-LED的管脚
void ledc_pwm_hs_init(void);

// 初始化低速ledc通道,5KHz,13Bit分辨率,共使用1个通道,对应单色LED的管脚
void ledc_pwm_ls_init(void);

// 指定高速/低速ledc通道,在设定的时间内,从当前占空比 渐变到 期望占空比(0~1000‰,省去了手动计算,更加方便)
void ledc_pwm_set_fade_duty_cycle(ledc_channel_config_t ledc_hs[], uint32_t ch, uint32_t duty_cycle, uint32_t time);

// 指定高速/低速ledc通道,设置固定占空比输出(0~1000‰,省去了手动计算,更加方便)
void ledc_pwm_set_duty_cycle(ledc_channel_config_t ledc_hs[], uint32_t ch, uint32_t duty_cycle);

注意事项

  • 鉴于数据手册对 led control 的说明很少,不建议了解具体硬件细节,直接使用easyio封装好的函数去调用

  • 以定时器的分辨率去输出脉宽时(ledc_pwm_set_fade / ledc_pwm_set_duty),要根据使用的定时器的分辨率手动计算。本例程使用的定时器分辨率为13Bit,输出脉宽范围0~100%(对应0~8191)。

  • 由于ledc的参数较多,频率参数不建议随意更改,如需更改请移步ledc_pwm.h的宏定义,请遵照手册的参数去配置

  • ESP32的ledc分为高速、低速通道,各有8个输出通道,共16通道。

  • 硬件板载LED数量受限,仅使用GPIO-18演示LED渐变。其他通道也均可用,可用示波器看波形,但碍于无外接的LED,无法直观显示。

马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/jmforu/easyio-lib-for-esp32.git
git@gitee.com:jmforu/easyio-lib-for-esp32.git
jmforu
easyio-lib-for-esp32
easyio-lib-for-esp32
master

搜索帮助