zoukankan      html  css  js  c++  java
  • STM32的低功耗模式

    一 待机模式standby和STOP模式的区别:

    进入低功耗模式:都一样,都是先关闭相应时钟,关闭相应外设,配置相应所有IO口(浮动输入),然后配置相应的唤醒中断源,中断影响的O口,然后调用相应函数进入低功耗模式

    进入低功耗模式函数:打开电源管理时钟,使能唤醒引脚,PWR_EnterSTANDBYMode();//进入待机
                                      //PWR_EnterSTOPMode(PWR_Regulator_ON, PWR_STOPEntry_WFI|PWR_STOPEntry_WFE);//进入停机

    唤醒中断:清除所有中断标志(IO口中断标志,外设中断标志,系统唤醒标志),此时有所区别:STOP模式需要重新配置系统时钟和模块初始化

    退出中断后:STOP后从中断处开始执行,各种状态保存;但standby这是系统复位

    二串口唤醒中断:

    2.1RX外中断法:进入standby模式前先将RX配置成中断输入,然后进入低功耗模式,唤醒中断中将RX配置成串口接收状态,配置串口然后手动设置接收中断标志,退出唤醒中断后立马进入中断接收。缺点:会丢失部分字节,所以适合对丢失部分字节不是很敏感的场合。解决办法:多添加串口协议帧的引导字节

    在接收中断中对开头引导做兼容处理。

    2.2 其它的串口唤醒方法

    现象:第一次从stop模式唤醒时串口能正常通信,判断一段时间后无数据则再一次进入stop mode,然后再一次唤醒,此时串口无法输出。

    最后发现原因是串口重新初始化时HAL_UART_Init()函数中会判断if(huart->State == HAL_UART_STATE_RESET),此时才会执行HAL_UART_MspInit(huart),配置串口IO口。
    解决办法:每次将UART_HandleTypeDef结构体中的State成员初始化为HAL_UART_STATE_RESET。或者再次初始化之前调用HAL_UART_DeInit()。

    三Wakeup引脚的系统中断:专用的系统唤醒引脚设置成上升沿中断。

    四RTC闹铃中断:

    在低功耗模式下的看门口处理:看门狗在STOP模式下还在工作,所以还需要不停喂狗,不然看门狗复位,低功耗模式也没有什么用了。

  • 相关阅读:
    Linux报错:“/bin/bash^M: 坏的解释器
    搭建单向HTTPS
    Wamp Apache 启动失败检测方法
    Excel 日常操作
    apache https 双向认证
    android搭建
    我身为程序员踩过的坑
    windows 2008 安装 apache + mysql + php
    Svn
    工具软件类
  • 原文地址:https://www.cnblogs.com/jieruishu/p/8512963.html
Copyright © 2011-2022 走看看