一 待机模式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模式下还在工作,所以还需要不停喂狗,不然看门狗复位,低功耗模式也没有什么用了。

最新文章

  1. Linux中总线设备驱动模型及平台设备驱动实例
  2. Java代理模式/静态代理/动态代理
  3. .Net Request.Form含有危险字符的处理办法
  4. jq制作好看的导航显示效果
  5. Unity-Animator深入系列---fullPathHash和shortNameHash
  6. Nodejs发送Post请求时出现socket hang up错误的解决办法
  7. 不带缓存的I/O和标准(带缓存的)I/O
  8. ActiveMQ讯息传送机制以及ACK机制详解
  9. log4net自定义字段写入SqlServer数据库 ASP.net
  10. CocoaPods一个Objective-C第三方库的管理利器
  11. Fuel4D 2.1 免费跨平台游戏引擎 现已发布
  12. SQL Server Service Borker 1
  13. Android学习路径(十)如何将Action Bar堆放在布局
  14. SVN:One or more files are in a conflicted state
  15. 使用TypeScript开发ReactNative应用的简单示例
  16. python连接MongoDB
  17. mysql Group By
  18. jQuery插件ImgAreaSelect 实例讲解一(头像上传预览和裁剪功能)
  19. C语言之——文件操作模式
  20. IDEA tomcat8 控制台日志乱码

热门文章

  1. python 基础之第九天
  2. python 基础之第四天
  3. 如何使用Psyco为你的Python程序提速
  4. 火狐浏览器安装VULTR笔记
  5. C++类对象之间的类型转换和重载
  6. oracle获取一段时间内所有的小时、天、月
  7. Object.prototype.toString.call(obj)检测数据类型
  8. 解决warning: LF will be replaced by CRLF in **(filename)
  9. java 整除(/) 求余(%) 运算
  10. java:calendar类及一些比较实用的utils(一)