stm32f1 的停止休眠时钟问题

之前在学习低功耗时,遇到了关于休眠的一些问题。主要总结下停止休眠的。

stm32f1 的停止休眠时钟问题_第1张图片并且,有一句:stm32f1 的停止休眠时钟问题_第2张图片所以,在唤醒后,使用了内部时钟,显示出的效果是led闪烁变慢。我在代码中添加了定时器定时休眠,结果就发现了:尽管其他的IO处于休眠的状态,但用JLink调试时,可以看到我的定时器值还在变化,而且变得速度比原先慢了很多。还有一个现象就是,在读取按键时,显示的结果也变得凌乱。在网上找的案例中,有用函数clock(自己写的)来重新初始化。但我作为初学者还得让我改时钟的配置,倒不如直接用SystemInit:`void EXTI2_IRQHandler(void)

{

EXTI_ClearITPendingBit(EXTI_Line2);

LED1=1;

SystemInit();

}

`
我可以直接剖析这个函数解决问题。另外,在查找寄存器的时候,有些寄存器在中文手册和权威指南上都找不到。最后,在官网给的资料上找到了关于这些寄存器的详细介绍。例如:System control register (SCB_SCR)经过网友的帮助,知道了这是在程序设计指南STM32F10xxx/20xxx/21xxx/L1xxxx
Cortex-M3 programming manual中找到的。这里有地址,我在下面也会上传这个pdf。
这里链接到推荐博客

另外,还有一个推荐的博客,对于讲述三种休眠很详细。解决了上述的问题:链接到推荐博客

你可能感兴趣的:(stm32学习路)