@@ -126,17 +126,31 @@ bool ledcAttachChannel(uint8_t pin, uint32_t freq, uint8_t resolution, uint8_t c
|
126 | 126 | return false;
|
127 | 127 | }
|
128 | 128 | } 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 | + |
130 | 137 | if (ledc_timer_config(&ledc_timer) != ESP_OK) {
|
131 | 138 | log_e("ledc setup failed!");
|
132 | 139 | return false;
|
133 | 140 | }
|
134 | 141 |
|
135 | 142 | uint32_t duty = ledc_get_duty(group, (channel % 8));
|
136 | 143 |
|
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 | + |
140 | 154 | ledc_channel_config(&ledc_channel);
|
141 | 155 | }
|
142 | 156 |
|
@@ -256,7 +270,13 @@ uint32_t ledcWriteTone(uint8_t pin, uint32_t freq) {
|
256 | 270 |
|
257 | 271 | uint8_t group = (bus->channel / 8), timer = ((bus->channel / 2) % 4);
|
258 | 272 |
|
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; |
260 | 280 |
|
261 | 281 | if (ledc_timer_config(&ledc_timer) != ESP_OK) {
|
262 | 282 | log_e("ledcWriteTone configuration failed!");
|
@@ -307,7 +327,13 @@ uint32_t ledcChangeFrequency(uint8_t pin, uint32_t freq, uint8_t resolution) {
|
307 | 327 | }
|
308 | 328 | uint8_t group = (bus->channel / 8), timer = ((bus->channel / 2) % 4);
|
309 | 329 |
|
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; |
311 | 337 |
|
312 | 338 | if (ledc_timer_config(&ledc_timer) != ESP_OK) {
|
313 | 339 | log_e("ledcChangeFrequency failed!");
|
|
0 commit comments