Skip to content

Commit 51023ae

Browse files
feat(ledc): clear all fields added to ledc struct in IDF 5.4 (#11276)
* feat(ledc): clear all fields added to ledc struct in IDF 5.4 * feat(ledc): use memset for all ledc struct * fix(ledc): typo - missing semi collon * ci(pre-commit): Apply automatic fixes --------- Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
1 parent c110ca8 commit 51023ae

File tree

1 file changed

+32
-6
lines changed

1 file changed

+32
-6
lines changed

cores/esp32/esp32-hal-ledc.c

+32-6
Original file line numberDiff line numberDiff line change
@@ -126,17 +126,31 @@ 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;
130+
memset((void *)&ledc_timer, 0, sizeof(ledc_timer_config_t));
131+
ledc_timer.speed_mode = group;
132+
ledc_timer.timer_num = timer;
133+
ledc_timer.duty_resolution = resolution;
134+
ledc_timer.freq_hz = freq;
135+
ledc_timer.clk_cfg = clock_source;
136+
130137
if (ledc_timer_config(&ledc_timer) != ESP_OK) {
131138
log_e("ledc setup failed!");
132139
return false;
133140
}
134141

135142
uint32_t duty = ledc_get_duty(group, (channel % 8));
136143

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-
};
144+
ledc_channel_config_t ledc_channel;
145+
memset((void *)&ledc_channel, 0, sizeof(ledc_channel_config_t));
146+
ledc_channel.speed_mode = group;
147+
ledc_channel.channel = (channel % 8);
148+
ledc_channel.timer_sel = timer;
149+
ledc_channel.intr_type = LEDC_INTR_DISABLE;
150+
ledc_channel.gpio_num = pin;
151+
ledc_channel.duty = duty;
152+
ledc_channel.hpoint = 0;
153+
140154
ledc_channel_config(&ledc_channel);
141155
}
142156

@@ -256,7 +270,13 @@ uint32_t ledcWriteTone(uint8_t pin, uint32_t freq) {
256270

257271
uint8_t group = (bus->channel / 8), timer = ((bus->channel / 2) % 4);
258272

259-
ledc_timer_config_t ledc_timer = {.speed_mode = group, .timer_num = timer, .duty_resolution = 10, .freq_hz = freq, .clk_cfg = clock_source};
273+
ledc_timer_config_t ledc_timer;
274+
memset((void *)&ledc_timer, 0, sizeof(ledc_timer_config_t));
275+
ledc_timer.speed_mode = group;
276+
ledc_timer.timer_num = timer;
277+
ledc_timer.duty_resolution = 10;
278+
ledc_timer.freq_hz = freq;
279+
ledc_timer.clk_cfg = clock_source;
260280

261281
if (ledc_timer_config(&ledc_timer) != ESP_OK) {
262282
log_e("ledcWriteTone configuration failed!");
@@ -307,7 +327,13 @@ uint32_t ledcChangeFrequency(uint8_t pin, uint32_t freq, uint8_t resolution) {
307327
}
308328
uint8_t group = (bus->channel / 8), timer = ((bus->channel / 2) % 4);
309329

310-
ledc_timer_config_t ledc_timer = {.speed_mode = group, .timer_num = timer, .duty_resolution = resolution, .freq_hz = freq, .clk_cfg = clock_source};
330+
ledc_timer_config_t ledc_timer;
331+
memset((void *)&ledc_timer, 0, sizeof(ledc_timer_config_t));
332+
ledc_timer.speed_mode = group;
333+
ledc_timer.timer_num = timer;
334+
ledc_timer.duty_resolution = resolution;
335+
ledc_timer.freq_hz = freq;
336+
ledc_timer.clk_cfg = clock_source;
311337

312338
if (ledc_timer_config(&ledc_timer) != ESP_OK) {
313339
log_e("ledcChangeFrequency failed!");

0 commit comments

Comments
 (0)