GD32低功耗:深度睡眠唤醒系统时钟变慢问题
问题1、进入深度睡眠后,通过外部中断唤醒,发现系统时钟变慢。2、进入休眠模式,通过任何中断唤醒,系统时钟正常。
原因 从电源管理章节可知,睡眠模式下使用没有什么需要需要注意的,在使能PMU时钟前提下调用函数pmu_to_sleepmode即可,任何中断均可唤醒,唤醒后即可正常运行使用。 深度睡眠需要注意的是在使能PMU时钟前提下调用pmu_to_deepsleepmode深度睡眠,使用任何EXTI中断或事件唤醒后,他的当前系统运行时钟是内部的8M时钟,所以就出现唤醒后系统时钟变慢的情况。 解决
1、深度睡眠唤醒后需要对系统时钟重新配置,调用SystemInit、SystemCoreClockUpdate函数即可,该函数在system_gd32f10x.c中定义。 为什么要重新初始化系统函数 在深度睡眠模式下,系统的运行时钟会被降低到内部的8Mhz时钟,而当外部中断或事件唤醒系统时,系统的当前运行时钟仍然是内部的8Mhz时钟,因此会导致系统时钟变慢。 调用一些系统函数,如SystemInit和SystemCoreClockUpdate,这些函数可以在system_gd32f10x.c文件中找到并使用。 当系统处于深度睡眠模式时,如果时钟源选择的是内部低速时钟,那么在通过外部中断唤醒后,可能会发现系统时钟变慢。 在深度睡眠模式下,需要使能PMU时钟才能正常运行 根据实际应用需求,调整系统时钟的分频和倍频。 在GD32低功耗的深度睡眠唤醒后,系统时钟变慢的问题可能是由于深度睡眠状态下系统的时钟配置与唤醒后的时钟配置不一致所导致的。 系统时钟源设置正确,并且时钟源稳定可靠 需要在唤醒后重新配置系统时钟,以确保它与外部时钟信号同步。 在进入深度睡眠之前,可以尽量减少电流消耗 这个问题可能与电源管理和时钟管理有关,需要仔细检查和配置相关设置。 在唤醒过程中,需要正确设置相关寄存器