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中总线设备驱动模型及平台设备驱动实例
- Java代理模式/静态代理/动态代理
- .Net Request.Form含有危险字符的处理办法
- jq制作好看的导航显示效果
- Unity-Animator深入系列---fullPathHash和shortNameHash
- Nodejs发送Post请求时出现socket hang up错误的解决办法
- 不带缓存的I/O和标准(带缓存的)I/O
- ActiveMQ讯息传送机制以及ACK机制详解
- log4net自定义字段写入SqlServer数据库 ASP.net
- CocoaPods一个Objective-C第三方库的管理利器
- Fuel4D 2.1 免费跨平台游戏引擎 现已发布
- SQL Server Service Borker 1
- Android学习路径(十)如何将Action Bar堆放在布局
- SVN:One or more files are in a conflicted state
- 使用TypeScript开发ReactNative应用的简单示例
- python连接MongoDB
- mysql Group By
- jQuery插件ImgAreaSelect 实例讲解一(头像上传预览和裁剪功能)
- C语言之——文件操作模式
- IDEA tomcat8 控制台日志乱码
热门文章
- python 基础之第九天
- python 基础之第四天
- 如何使用Psyco为你的Python程序提速
- 火狐浏览器安装VULTR笔记
- C++类对象之间的类型转换和重载
- oracle获取一段时间内所有的小时、天、月
- Object.prototype.toString.call(obj)检测数据类型
- 解决warning: LF will be replaced by CRLF in **(filename)
- java 整除(/) 求余(%) 运算
- java:calendar类及一些比较实用的utils(一)