• stm32cubemx hal学习记录:PWR 低功耗停止模式


    一、低功耗停止模式

    1、所有时钟都已经停止

    2、进入方式:配置PWR_CR寄存器的PDDS+LPDS位+SLEEPDEEP位+WFI或WFE命令

    3、唤醒方式:任意外部中断

    4、关闭所有1.8v区域的时钟

    5、HSI和HSE的振荡器关闭

    6、开启或处于低功耗模式(依据电源控制寄存器的设定)

    // 暂停滴答时钟,防止通过滴答时钟中断唤醒
    HAL_SuspendTick();
    //进入停止模式,设置电压调节器为低功耗模式,等待中断唤醒
    HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON,PWR_STOPENTRY_WFI);
    SYSCLKConfig_STOP();
    // 被唤醒后,恢复滴答时钟
    HAL_ResumeTick();

    二、配置过程

    1、配置RCC、SYS、USART1、时钟84MHz

    2、添加按键PB8的外部中断模式,LED灯PF9、PF10输出模式

    3、生成代码

    三、代码编写

    1、添加外部中断回调函数

    1. void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
    2. {
    3. if(GPIO_Pin==GPIO_PIN_10)
    4. {
    5. HAL_GPIO_WritePin(GPIOF,GPIO_PIN_10,GPIO_PIN_RESET);
    6. }
    7. }

    2、在main中添加函数

    1. // 使用绿灯指示,运行状态
    2. HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9, GPIO_PIN_RESET);
    3. HAL_Delay(2000);
    4. HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9, GPIO_PIN_SET);
    5. //进入睡眠降低功耗
    6. HAL_Delay(2000);
    7. //进入停止状态
    8. HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9, GPIO_PIN_RESET);
    9. //暂停滴答时钟,防止通过滴答时钟中断唤醒
    10. HAL_SuspendTick();
    11. //使能PWR时钟
    12. __HAL_RCC_PWR_CLK_ENABLE();
    13. //清除唤醒标记
    14. __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
    15. // 进入停止模式
    16. HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
    17. HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9, GPIO_PIN_SET);
    18. // 刚从STOP模式唤醒时钟默认使用内部高速8M时钟,所以需要重新配置时钟
    19. SystemClock_Config();
    20. // 被唤醒后,恢复滴答时钟
    21. HAL_ResumeTick();
    22. // 获取重新配置后的时钟状态
    23. SYSCLK_Frequency = HAL_RCC_GetSysClockFreq();
    24. HCLK_Frequency = HAL_RCC_GetHCLKFreq();
    25. PCLK1_Frequency = HAL_RCC_GetPCLK1Freq();
    26. PCLK2_Frequency = HAL_RCC_GetPCLK2Freq();
    27. SYSCLK_Source = __HAL_RCC_GET_SYSCLK_SOURCE();
    28. // 重新配置时钟源后始终状态
    29. HAL_Delay(2000);
    30. HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9, GPIO_PIN_SET);

  • 相关阅读:
    协作+安全+存储,云盒子助力深圳爱德泰重构数据中心
    WSL---Window上的子Linux系统
    怎样判断气门油封有问题?
    【Azure K8S | AKS】在不丢失文件/不影响POD运行的情况下增加PVC的大小
    基于stm32单片机的光照检测智能台灯
    Google Pub/Sub入门
    PG14合并库
    《Java基础知识》Java 浅拷贝与深拷贝2
    【JDK 8-函数式编程】4.3 Consumer
    一,DRF入门规范
  • 原文地址:https://blog.csdn.net/ohhjack/article/details/127818344