STM32U0]【STM32U083测评】+LPUART和LPTIMER唤醒功能开发

LPUART和LPTIMER唤醒功能开发


STM32U0里面有若干组LPUART和LPTIMER,这两者和GPIO,都可以作为STOP模式的唤醒源。
如果要使用STOP2模式,则一般的串口是无法工作的,只能选择使用LPUART。
所有的STOP模式下,一般的TIMER都无法工作,只能选择用LPTIMER
而LPTIMER的时钟来源必须是LSE或者LSI,其他时钟源在STOP模式下不工作
知道了以上三点,下面来设计这些功能。进入STOP模式的方法以及LED闪烁的逻辑参考笔者上一篇文章,这里不赘述,直接在上一篇文章的基础上增加相关功能。

首先RCC的配置要改为使用HSI和LSI,前者是LPUART需要的,后者是LPTIMER需要的,LPUART不支持MSI
1、配置HSI和LSI
 


2、在唤醒后开启HSI
 


3、唤醒后配置时钟
 



LPTIMER的配置
1、定义HAL_LPTIM_MspInit函数,此函数主要就是开启相关时钟配置以及中断配置。参考例程或者用cubemx生成一个都行
注意这里板上没有LSE的情况下,只能选LSI
 


2、实现lptimer2的初始化函数
 


这里的Prescaler是相对于外部32768Hz的时钟而言的,Prescaler值越大
触发源要填LPTIM_TRIGSOURCE_SOFTWARE,这样可以使用lptimer的定时功能而不需要依赖外部事件。
3、在每次进入低功耗前调用
 


这个TIMEOUT值可以自行定义。即可在休眠一段时间后唤醒
演示效果如下 



然后介绍LPUART的配置。
首先这里选择LPUART1,此LPUART1接到板上STLINK的虚拟串口上面,调试起来比较方便
 


1、配置LPUART的时钟源,引脚,中断
 


这个函数可以直接参考例程或者用cubemx生成一个都行。注意时钟来源需要配置为HSI
2、LPUART初始化函数
 


这里主要是配置一下波特率,停止位,校验位等信息
3、使能中断
 


其中WUF就是唤醒中断,RXNE是接收中断
4、在休眠前调用以下API
 


需要确保串口上面没有数据传输再进入低功耗,以免进入后立即被唤醒
休眠后调用此API
 


按以上配置后,MCU STOP后,如果有串口数据,即可唤醒
演示效果如下
 



在修改了时钟配置,并开启了LPUART和LPTIMER的情况下,使用STOP2模式时,测得电流约为
1.7uA
以这种级别的功耗待机,就非常节约能源了。像有些广告*,用的是太阳能电池供电的,只在收到控制中心的命令时才工作,那用STM32U0来做电源管理就非常省电了。。
---------------------
作者:chen000000009
链接:https://bbs.21ic.com/icview-3374564-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值