ST意法半导体
直播中

李艺银

7年用户 1040经验值
私信 关注
[问答]

为什么STM32L5外设时钟一直运行在stop 2模式?

我使用的是 STM32L552ZE(实际上是 nucleo 版本)。在仔细阅读手册并查看 STM32 Cube IDE 中的一些示例代码后,我得出的结论是,这段代码是我需要使用 Wait For Event 进入停止 2 模式的代码:
  • PWR->CR1 =                       //
  •     (PWR->CR1 & (~PWR_CR1_LPMS)) // Clear Low Power Mode Select bits
  •     | PWR_CR1_LPMS_STOP2         // Select Stop 2 Mode
  •     ;
  • // Deep sleep
  • SCB->SCR = SCB_SCR_SLEEPDEEP_Msk;
  • // Wait for event
  • __SEV();
  • __WFE();
  • __WFE();
这非常有效,因为处理器确实停止运行了。我还可以通过在 LPUART 接口(由 LSE 提供时钟)上发送一个字节来唤醒处理器。
但是,现在我还配置了一些(非 LP)定时器,然后 MCU 立即被唤醒。即使定时器是使用其相应的 APB 时钟配置的,但据推测应该在停止 2 模式下将其禁用。
我现在的问题是,APB 时钟外围设备怎么可能将我的 MCU 从停止 2 模式唤醒?








回帖(1)

关睿

2022-12-13 11:19:30
我刚刚发现调试器在DBGMCU.CR寄存器中设置了“DBG_STOP”和“DBG_STANDBY”位,这会导致时钟继续运行。这些标志不会在复位时清除,因此在正确测试停止模式之前必须重新启动系统。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分