[应用相关] STM32L0低功耗设计——STOP_RTC模式下的休眠时间(转载)

[复制链接]
1145|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 | 显示全部楼层

非常感谢楼主分享
wakayi 发表于 2019-7-8 11:49 | 显示全部楼层

非常感谢楼主分享
wowu 发表于 2019-7-8 11:53 | 显示全部楼层

非常感谢楼主分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

52

主题

3443

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部