diff --git a/components/driver/ledc/ledc.c b/components/driver/ledc/ledc.c index f7afd11736..a6d9170e29 100644 --- a/components/driver/ledc/ledc.c +++ b/components/driver/ledc/ledc.c @@ -849,7 +849,7 @@ uint32_t ledc_get_freq(ledc_mode_t speed_mode, ledc_timer_t timer_num) ESP_LOGW(LEDC_TAG, "LEDC timer not configured, call ledc_timer_config to set timer frequency"); return 0; } - return ((uint64_t) src_clk_freq << LEDC_LL_FRACTIONAL_BITS) / precision / clock_divider; + return (((uint64_t) src_clk_freq << LEDC_LL_FRACTIONAL_BITS) + (uint64_t) precision * clock_divider / 2) / precision / clock_divider; } static inline void IRAM_ATTR ledc_calc_fade_end_channel(uint32_t *fade_end_status, uint32_t *channel) diff --git a/components/driver/test_apps/ledc/main/test_app_main.c b/components/driver/test_apps/ledc/main/test_app_main.c index 652d07f79f..df3999b7f2 100644 --- a/components/driver/test_apps/ledc/main/test_app_main.c +++ b/components/driver/test_apps/ledc/main/test_app_main.c @@ -10,7 +10,7 @@ #include "esp_heap_caps.h" // Some resources are lazy allocated in LEDC driver, the threshold is left for that case -#define TEST_MEMORY_LEAK_THRESHOLD (150) +#define TEST_MEMORY_LEAK_THRESHOLD (230) static size_t before_free_8bit; static size_t before_free_32bit; diff --git a/components/driver/test_apps/ledc/main/test_ledc.c b/components/driver/test_apps/ledc/main/test_ledc.c index 8634254958..e0249ee33a 100644 --- a/components/driver/test_apps/ledc/main/test_ledc.c +++ b/components/driver/test_apps/ledc/main/test_ledc.c @@ -553,7 +553,7 @@ static void timer_frequency_test(ledc_channel_t channel, ledc_timer_bit_t timer_ uint32_t clk_src_freq = 0; esp_clk_tree_src_get_freq_hz((soc_module_clk_t)TEST_DEFAULT_CLK_CFG, ESP_CLK_TREE_SRC_FREQ_PRECISION_EXACT, &clk_src_freq); if (clk_src_freq == 80 * 1000 * 1000) { - theoretical_freq = 8992; + theoretical_freq = 8993; } else if (clk_src_freq == 96 * 1000 * 1000) { theoretical_freq = 9009; }