你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

怎样用HAL库的RTC设置闹钟设置一个2天3小时4分5秒的闹钟中断

[复制链接]
冯兆亮 提问时间:2018-7-29 15:05 /
怎样用HAL库的RTC设置闹钟设置一个2天3小时4分5秒的闹钟中断,并能持续一直进行设置这个闹钟,因为HAL库中看到的设置闹钟中断函数,不能超过一天,也就是只能在24小时之内。
函数:HAL_StatusTypeDef HAL_RTC_SetAlarm_IT(RTC_HandleTypeDef *hrtc, RTC_AlarmTypeDef *sAlarm, uint32_t Format);
收藏 1 评论11 发布时间:2018-7-29 15:05

举报

11个回答
zhao.zhao 回答时间:2018-7-29 21:34:04
这个有点难,一般最大唤醒时间只有一天多一点,要不就不能够称闹钟了。间接的办法是用软件来实现,先设置总的唤醒时间,然后计算,超过一天的先设置一天唤醒,一天后减去24小数,再次计算剩余多少时间,再次设置,直到某次唤醒后,下次的时间=0了,这个时间点就是要求唤醒的时间点。

评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

butterflyspring 回答时间:2018-7-30 11:33:49
可以的,假设你开始设定每月的1号的3点中断,中断产生后,你就改为3号..如此类推,不就行?

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

废鱼 回答时间:2018-7-30 13:45:17
楼上的建议比较合理,只能通过算日期和时间进行闹钟唤醒。这样建议使用unix时间进行计算。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

冯兆亮 回答时间:2018-8-4 21:48:10
zhao.zhao 发表于 2018-7-29 21:34
这个有点难,一般最大唤醒时间只有一天多一点,要不就不能够称闹钟了。间接的办法是用软件来实现,先设置总 ...

感谢回复!
冯兆亮 回答时间:2018-8-4 21:48:52
butterflyspring 发表于 2018-7-30 11:33
可以的,假设你开始设定每月的1号的3点中断,中断产生后,你就改为3号..如此类推,不就行? ...

感谢回复,软件目前这样实现了,在中断回调里面重新定下一次闹钟。
冯兆亮 回答时间:2018-8-4 21:49:12
安 发表于 2018-7-30 13:45
楼上的建议比较合理,只能通过算日期和时间进行闹钟唤醒。这样建议使用unix时间进行计算。 ...

感谢回复,通过软件计算实现了。
zhao.zhao 回答时间:2018-8-5 13:26:50
liangliangwa 发表于 2018-8-4 21:49
感谢回复,通过软件计算实现了。

西奥伟 回答时间:2018-8-16 13:48:31
安 发表于 2018-7-30 13:45
楼上的建议比较合理,只能通过算日期和时间进行闹钟唤醒。这样建议使用unix时间进行计算。 ...

能交流一下吗?
废鱼 回答时间:2018-8-16 13:50:18

您好。有问题您可以在论坛留贴。大家会帮助您解决的。
天天地天天 回答时间:2018-10-3 11:22:09
下面是我測試停止模式使用RTC告警喚醒的程序,但是每次進入都停止模式後 RTC告警,卻怎麼也換不醒,想問問大家有甚麼解法嗎?
P.S. 我告警測試時間大約是1分鐘,但後面要使用的大約是8小時醒一次這樣。
  1. void lprun_2mhz(void)
  2. {
  3. SystemClock_2MHz();
  4.    HAL_SuspendTick();
  5.    __HAL_RCC_PWR_CLK_ENABLE();
  6.   HAL_PWREx_EnableLowPowerRunMode();
  7.   __HAL_RCC_PWR_CLK_DISABLE();
  8. }

  9. void stop1_mroff_rtc(void)
  10. {
  11.      lprun_2mhz();
  12.       __HAL_RCC_PWR_CLK_ENABLE();
  13.      Function_Disable();
  14.      HAL_IO_DeInit();
  15.     HAL_SuspendTick();

  16.    //HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON,PWR_STOPENTRY_WFI);
  17.     HAL_PWREx_EnterSTOP1Mode(PWR_STOPENTRY_WFE);
  18.     HAL_ResumeTick();
  19. }
复制代码




McDong 回答时间:2018-11-19 11:17:19
安 发表于 2018-7-30 13:45
楼上的建议比较合理,只能通过算日期和时间进行闹钟唤醒。这样建议使用unix时间进行计算。 ...

感谢楼主的回复,对我现阶段的问题有很大的帮助!

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版