stm32进入低功耗下的停止模式后停止所有时钟线,那么为什么还是可以通过外部中断唤醒stm32,明明gpio的时钟线也肯定被停止了,外部中断不也会被停止工作吗

stm32进入低功耗下的停止模式后停止所有时钟线,那么为什么还是可以通过外部中断唤醒stm32,明明gpio的时钟线也肯定被停止了,外部中断不也会被停止工作吗?

STM32在停止模式下会维持外部中断线的触发,只是停止了普通工作时的处理流程以及相应部件的时钟源,并且将相应的GPIO引脚的输出状态保存,保持其中断触发线的状态。当外部中断触发时,唤醒STM32,并重新初始化相应的部件和时钟源工作。这样,外部中断仍然有效,仍可以唤醒STM32。

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7681992
  • 这篇博客也不错, 你可以看下STM32的8种GPIO端口模式配置——上拉、下拉、模拟、浮空输入、推挽、开漏、复用输出
  • 除此之外, 这篇博客: STM32 LL库系列教程① 实现GPIO简单的反转中的 最后:生成工程后在main函数while(1)下添加如下代码即可实现简单的IO反转 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 		/* 你应该把你的代码写在在BEGIN与END之间 */
    		LL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
    		LL_mDelay(500);
    		
    		/* You can also write this, uncomment the code below and then comment the code above */
    		/* 或者你可以这样写,把下面的代码反注释然后把上面的代码注释 */
    //		LL_GPIO_ResetOutputPin(LED_GPIO_Port, LED_Pin);
    //		LL_mDelay(500);
    //		LL_GPIO_SetOutputPin(LED_GPIO_Port, LED_Pin);
    //		LL_mDelay(500);
    

    注意:一定要在BEGIN和END之间写代码,否则重新生成工程代码会覆盖!!!
    在这里插入图片描述