最近在使用STM32L151RC做低功耗方案,要使用到 LowPowerRunModeSram(),官方参考代码
STM32L1xx_StdPeriph_Lib_V1.3.1中 Examples PWR CurrentConsumption
__ramfunc void LowPowerRunModeSRAM_Measure(void)
{
/* This function should be called when the program is running from internal SRAM. */
FLASH_RUNPowerDownCmd(ENABLE);
/* Wait Until Key button pressed */
/// 原 while(((*(__IO uint32_t *)0x40020010) & 0x0001) == 0) 对应 PA.00
/// 改 PC.13 接按键
while(((*(__IO uint32_t *)0x40020810) & 0x2000) != 0)
{ }
/* Wait Until Key button pressed */
/// 原 while(((*(__IO uint32_t *)0x40020010) & 0x0001) != 0)
/// 改 PC.13
while(((*(__IO uint32_t *)0x40020810) & 0x2000) != 0)
{}
/* This function should be called when the program is running from internal SRAM. */
FLASH_RUNPowerDownCmd(DISABLE);
}
在执行这个函数前,是把所有GPIO时钟都关掉了的,有谁测试过这个真能唤醒退出么?
我把原代码中的PA.00唤醒,改成PC.13,发现如果把GPIOC的时钟关掉,是无法通过按键退出的。
GPIO时钟关掉后,GPIO->IDR 还能正常反应IO上的信号变化么?如果不能,参考代码为什么这么写? |