@@ -126,17 +126,24 @@ bool ledcAttachChannel(uint8_t pin, uint32_t freq, uint8_t resolution, uint8_t c
126126 return false;
127127 }
128128 } else {
129- ledc_timer_config_t ledc_timer = {.speed_mode = group , .timer_num = timer , .duty_resolution = resolution , .freq_hz = freq , .clk_cfg = clock_source };
129+ ledc_timer_config_t ledc_timer = {.speed_mode = group , .timer_num = timer , .duty_resolution = resolution , .freq_hz = freq , .clk_cfg = clock_source , . deconfigure = false };
130130 if (ledc_timer_config (& ledc_timer ) != ESP_OK ) {
131131 log_e ("ledc setup failed!" );
132132 return false;
133133 }
134134
135135 uint32_t duty = ledc_get_duty (group , (channel % 8 ));
136136
137- ledc_channel_config_t ledc_channel = {
138- .speed_mode = group , .channel = (channel % 8 ), .timer_sel = timer , .intr_type = LEDC_INTR_DISABLE , .gpio_num = pin , .duty = duty , .hpoint = 0
139- };
137+ ledc_channel_config_t ledc_channel ;
138+ memset ((void * )& ledc_channel , 0 , sizeof (ledc_channel_config_t ));
139+ ledc_channel .speed_mode = group ;
140+ ledc_channel .channel = (channel % 8 );
141+ ledc_channel .timer_sel = timer ;
142+ ledc_channel .intr_type = LEDC_INTR_DISABLE ;
143+ ledc_channel .gpio_num = pin ;
144+ ledc_channel .duty = duty ;
145+ ledc_channel .hpoint = 0 ;
146+
140147 ledc_channel_config (& ledc_channel );
141148 }
142149
@@ -256,7 +263,7 @@ uint32_t ledcWriteTone(uint8_t pin, uint32_t freq) {
256263
257264 uint8_t group = (bus -> channel / 8 ), timer = ((bus -> channel / 2 ) % 4 );
258265
259- ledc_timer_config_t ledc_timer = {.speed_mode = group , .timer_num = timer , .duty_resolution = 10 , .freq_hz = freq , .clk_cfg = clock_source };
266+ ledc_timer_config_t ledc_timer = {.speed_mode = group , .timer_num = timer , .duty_resolution = 10 , .freq_hz = freq , .clk_cfg = clock_source , . deconfigure = false };
260267
261268 if (ledc_timer_config (& ledc_timer ) != ESP_OK ) {
262269 log_e ("ledcWriteTone configuration failed!" );
@@ -307,7 +314,7 @@ uint32_t ledcChangeFrequency(uint8_t pin, uint32_t freq, uint8_t resolution) {
307314 }
308315 uint8_t group = (bus -> channel / 8 ), timer = ((bus -> channel / 2 ) % 4 );
309316
310- ledc_timer_config_t ledc_timer = {.speed_mode = group , .timer_num = timer , .duty_resolution = resolution , .freq_hz = freq , .clk_cfg = clock_source };
317+ ledc_timer_config_t ledc_timer = {.speed_mode = group , .timer_num = timer , .duty_resolution = resolution , .freq_hz = freq , .clk_cfg = clock_source , . deconfigure = false };
311318
312319 if (ledc_timer_config (& ledc_timer ) != ESP_OK ) {
313320 log_e ("ledcChangeFrequency failed!" );
0 commit comments