Skip to content

Commit 7cfa399

Browse files
authored
feat(ledc): clear all fields added to ledc struct in IDF 5.4
1 parent c110ca8 commit 7cfa399

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

cores/esp32/esp32-hal-ledc.c

+13-6
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)