使用LEDC实现呼吸灯
本文是学习ESP-IDF的笔记,使用的是ESP32开发板,开发板上型号为ESP32-WROOM-32,ESP-IDF开发板选择为Espressif ESP32 Dev Kit,LEDC是ESP-IDF中产生PWM波形的库文件,其中提供了根据time和step的衰减函数,可以更加方便的实现呼吸灯效果,使用LEDC需要引入driver目录下的ledc.h头文件。
使用硬件PWM实现呼吸灯
- 配置定时器
- 配置通道
- 启用硬件渐变函数ledc_fade_func_install()
- 使用ledc_set_fade_with_time()和ledc_fade_start()实现硬件PWM呼吸灯
#include <stdio.h>
#include "driver/ledc.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#define LED_RED 2 //红灯引脚
#define LED_BLUE 4 //蓝灯引脚
#define LED_GREEN 5 //绿灯引脚
#define LED_ARR_LENGTH 3 //通道数组长度
#define TIMER_ARR_LENGTH 2 //定时器数组长度
#define TARGET_DUTY_MAX 4000 //衰减最大值
#define TARGET_DUTY_MIN 0 //衰减最小值
#define FADE_TIME 5000 //衰减周期时间
void app_main(void) {
/**
* timer定时器的初始化结构体
* 使用到的每个定时器都需要初始化
*/
ledc_timer_config_t ledcTimerConfig[TIMER_ARR_LENGTH] = {
{
.speed_mode = LEDC_HIGH_SPEED_MODE, //ledc速度模式
.freq_hz = 5000, //频率
.duty_resolution = LEDC_TIMER_13_BIT, //