diff --git a/components/drivers/pm/pm.c b/components/drivers/pm/pm.c index bd8a0a5e9586d7dc5d96ee48dab5f19385f83b02..655c4b4c02e180e7141729685142a436012c46f9 100644 --- a/components/drivers/pm/pm.c +++ b/components/drivers/pm/pm.c @@ -238,7 +238,15 @@ void rt_pm_request(rt_ubase_t mode) * if not, it has already called in rt_pm_exit() */ if (pm->current_mode < PM_SLEEP_MODE_START) + { pm->ops->exit(pm); + } + else if (pm->exit_count) + { + /* call exeit when global interrupt is disable */ + pm->ops->exit(pm); + pm->exit_count = 0; + } /* update current mode */ pm->current_mode = mode;