打印
[应用相关]

STM32L0低功耗设计——STOP_RTC模式下的休眠时间(转载)

[复制链接]
844|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
labasi|  楼主 | 2019-6-18 13:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本文介绍STOP_RTC模式下,设置进入低功耗休眠时间的方法。

    低功耗的休眠时间的设置首先需要确定RTC的基准时间,我们一般将其设置为1秒。

    接下来,就需要对HAL_RTCEx_SetWakeUpTimer_IT函数的第2个参数进行设置了。

    具体计算公式:数值 = 定时时间(秒)*(RTC时钟)/16,其中16为该参数的第2个参数,RTC时钟要看具体的时钟源,在我设计的项目中,使用的是LSI,则为37000。

    进一步计算:数值 = 定时时间(秒) * 37000 / 16 = 定时时间(秒)* 2312。如果将定时时间当作参数传递,我们可以这样调用该参数:

HAL_RTCEx_SetWakeUpTimer_IT(&hRTC, (uint32_t)u8_Second * 2312, RTC_WAKEUPCLOCK_RTCCLK_DIV16);


使用特权

评论回复
沙发
labasi|  楼主 | 2019-6-18 13:06 | 只看该作者
最后给出完整的带有时间设置的进入STOP_RTC模式的函数。

void CRtc::EnterStopRtcMode(uint8_t u8_Second)
{
        HAL_RTCEx_DeactivateWakeUpTimer(&hRTC);   
  HAL_RTCEx_SetWakeUpTimer_IT(&hRTC, (uint32_t)u8_Second * 2312, RTC_WAKEUPCLOCK_RTCCLK_DIV16);
  HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
}
    我们在调用上面的函数时,直接以秒为单位传递参数即可。


使用特权

评论回复
板凳
paotangsan| | 2019-7-8 11:40 | 只看该作者

非常感谢楼主分享

使用特权

评论回复
地板
renzheshengui| | 2019-7-8 11:44 | 只看该作者

非常感谢楼主分享

使用特权

评论回复
5
wakayi| | 2019-7-8 11:49 | 只看该作者

非常感谢楼主分享

使用特权

评论回复
6
wowu| | 2019-7-8 11:53 | 只看该作者

非常感谢楼主分享

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

52

主题

3382

帖子

2

粉丝