mirror of
https://github.com/espressif/esp-idf.git
synced 2025-09-30 19:19:21 +00:00
Merge branch 'contrib/github_pr_10402' into 'master'
ledc: move callback to IRAM as it's called from an ISR (GitHub PR) Closes IDFGH-8990 See merge request espressif/esp-idf!21711
This commit is contained in:
@@ -20,6 +20,7 @@
|
||||
#include "esp_rom_sys.h"
|
||||
#include "clk_ctrl_os.h"
|
||||
#include "esp_private/periph_ctrl.h"
|
||||
#include "esp_memory_utils.h"
|
||||
|
||||
static __attribute__((unused)) const char *LEDC_TAG = "ledc";
|
||||
|
||||
@@ -1236,8 +1237,15 @@ esp_err_t ledc_cb_register(ledc_mode_t speed_mode, ledc_channel_t channel, ledc_
|
||||
{
|
||||
LEDC_ARG_CHECK(speed_mode < LEDC_SPEED_MODE_MAX, "speed_mode");
|
||||
LEDC_ARG_CHECK(channel < LEDC_CHANNEL_MAX, "channel");
|
||||
LEDC_ARG_CHECK(cbs, "callback");
|
||||
LEDC_CHECK(p_ledc_obj[speed_mode] != NULL, LEDC_NOT_INIT, ESP_ERR_INVALID_STATE);
|
||||
LEDC_CHECK(ledc_fade_channel_init_check(speed_mode, channel) == ESP_OK, LEDC_FADE_INIT_ERROR_STR, ESP_FAIL);
|
||||
if (cbs->fade_cb && !esp_ptr_in_iram(cbs->fade_cb)) {
|
||||
ESP_LOGW(LEDC_TAG, "fade callback not in IRAM");
|
||||
}
|
||||
if (user_arg && !esp_ptr_internal(user_arg)) {
|
||||
ESP_LOGW(LEDC_TAG, "user context not in internal RAM");
|
||||
}
|
||||
s_ledc_fade_rec[speed_mode][channel]->ledc_fade_callback = cbs->fade_cb;
|
||||
s_ledc_fade_rec[speed_mode][channel]->cb_user_arg = user_arg;
|
||||
return ESP_OK;
|
||||
|
Reference in New Issue
Block a user