HAL_PWR_EnableSleepOnExit();
HAL_RCC_GetSysClockFreq()
HAL_RCC_GetHCLKFreq()
misc.c的NVIC_SystemLPConfig()函数
相关信息《Cortex-M3 权威指南》:
MSI时钟:
频率输出:
《Reference Manual_STM32L100xx, STM32L151xx, STM32L152xx and STM32L162xx advanced ARM_-based 32-bit MCUs》
《Cortex-M3-Technical-Reference-Manual》
《ARMv7-M_ARM》
内部RC振荡器 à 时钟源MSI à System clock à HCLK
|
|____RCC_ICSCR寄存器的MSIRANGE比特控制MSI的range.这个值在Stop模式下保持。
- 默认,上电后,处理器重启后处于Run模式。Run模式下CPU时钟来自HCLK。《refreencr manual》P108
- Dynamic voltage scalling management选择的voltage range会影响频率的高低范围。
- System Clock时钟在处理器重启后、从Stop和Standby模式唤醒后默认是选择MSI的,其他三个时钟源HSI/HSE/PLL时钟可以被关闭以降低功耗。两个二级时钟LSI RC(32KHz),LSE(32.768KHz)是否需要关闭?
- 关闭Flash???
- 由于需要外部加速度传感器的震动作为中断触发MCU唤醒,并考虑到所有操作可以在中断处理函数中执行,可以考虑使用Stop模式。该模式需要靠中断退出。Stop模式下PLL,HIS,HSE,MSI全部disabled。退出该模式时使用MSI作为系统时钟。
Regulator设置
VOS位设置
ULP(ultra low power)设置
MSI range设置
Vref