ESP32学习笔记十一之LED Control

配置定时器

通过调用函数 ledc_timer_config() 来完成定时器的设置。应为此函数提供包含以下配置设置的数据结构 ledc_timer_config_t

配置通道

通过调用函数 ledc_channel_config() 来配置通道(ledc_channel_t)

通过软件更改PWM占空比

通过首先调用专用函数 ledc_set_duty() 然后调用 ledc_update_duty() 来使更改生效来完成占空比的设置。要检查当前设置的值,有一个相应的 _get_ 函数 ledc_get_duty()

通过硬件衰落改变PWM占空比

LEDC 硬件提供了从一个占空值逐渐淡入另一个值的方法。要使用此功能,首先使用 ledc_fade_func_install() 启用淡入淡出。然后通过调用一个可用的淡入淡出函数来配置它:

ledc_set_fade_with_time()
ledc_set_fade_with_step()
ledc_set_fade()
最后用 ledc_fade_start() 开始淡出。

如果不再需要,可以使用 ledc_fade_func_uninstall() 禁用衰落和相关中断。

更改PWM频率

LEDC API 提供了几种“动态”改变 PWM 频率的方法。

其中一个选项是调用 ledc_set_freq()。有一个相应的函数 ledc_get_freq() 来检查当前设置的频率。
另一种改变频率和占空比分辨率的方法是调用 ledc_bind_channel_timer() 将其他定时器绑定到通道。
最后,可以通过调用 ledc_channel_config() 来更改通道的计时器。
 

ledc_timer_config_t ledc_timer = {
    .duty_resolution = LEDC_TIMER_13_BIT, // resolution of PWM duty
    .freq_hz = 1,                      // frequency of PWM signal
    .speed_mode = LEDC_HIGH_SPEED_MODE,           // timer mode
    .timer_num = LEDC_TIMER_0            // timer index
};
ledc_timer_config(&ledc_timer);

ledc_channel_config_t ledc_channel = {
    .channel    = LEDC_CHANNEL_0,
    .duty       = 4096,
    .gpio_num   = GPIO_NUM_25,
    .speed_mode = LEDC_HIGH_SPEED_MODE,
    .timer_sel  = LEDC_TIMER_0
};
ledc_channel_config(&ledc_channel);


 

 

 

 

 

你可能感兴趣的:(物联网,ESP32学习笔记)