[STM8] RTC自动唤醒

[复制链接]
5081|20
 楼主| RF、龙龙 发表于 2016-3-29 10:22 | 显示全部楼层 |阅读模式
各位大神,在刚接触这个RTC自动唤醒,有两个问题。第一,自动唤醒之后,程序从哪执行呢。第二,我发现唤醒时间第一次比较准,后来就都不准了,可能什么原因。谢谢大家了。
 楼主| RF、龙龙 发表于 2016-3-29 10:25 | 显示全部楼层
求解答
NE5532 发表于 2016-3-29 10:34 | 显示全部楼层
继续执行休眠指令后的指令。你的“一次”时间有多长?
wyde518 发表于 2016-3-29 10:52 | 显示全部楼层
从哪里开始休眠,唤醒后从哪里执行
 楼主| RF、龙龙 发表于 2016-3-29 10:58 | 显示全部楼层
NE5532 发表于 2016-3-29 10:34
继续执行休眠指令后的指令。你的“一次”时间有多长?

哦,30秒的倍数
 楼主| RF、龙龙 发表于 2016-3-29 10:59 | 显示全部楼层
wyde518 发表于 2016-3-29 10:52
从哪里开始休眠,唤醒后从哪里执行

哦哦  明白了,谢了
NE5532 发表于 2016-3-29 11:22 | 显示全部楼层
这么短的时间不准确,考虑RTC唤醒相关寄存器是否需要重新设置,或者是否有程序意外修改了这些寄存器的值。

评分

参与人数 1威望 +1 收起 理由
RF、龙龙 + 1 很给力!

查看全部评分

 楼主| RF、龙龙 发表于 2016-3-29 11:48 | 显示全部楼层
NE5532 发表于 2016-3-29 11:22
这么短的时间不准确,考虑RTC唤醒相关寄存器是否需要重新设置,或者是否有程序意外修改了这些寄存器的值。 ...

意思是还是程序的原因呗,行,   我在看看,谢了
 楼主| RF、龙龙 发表于 2016-3-29 12:01 | 显示全部楼层
NE5532 发表于 2016-3-29 11:22
这么短的时间不准确,考虑RTC唤醒相关寄存器是否需要重新设置,或者是否有程序意外修改了这些寄存器的值。 ...

大神,我是参考别人的程序,我看他在主函数中的最后才进入了休眠模式,那么意思就是被唤醒之后,只执行中断函数,其他的程序都不执行了是吗。但问题来了,所有唤醒后的功能都在睡眠之前执行的,按照你的说话,唤醒之后,程序从休眠那里开始执行,所有的功能就无法实现呀,但是我运行了程序,发现所有的功能都正常,我感觉每次唤醒之后,程序又是从主函数中从新开始执行的。有劳了。
NE5532 发表于 2016-3-29 14:53 | 显示全部楼层
这个,又的单片机是可以配置的,配置成唤醒以后只运行中断服务程序,或者执行了中断服务程序以后继续执行主程序,具体要看你的单片机手册。如果不能配置,那么基本肯定是执行了中断服务程序,然后再执行主程序。所以你程序不能只参考了事,要自己了解所用单片机的特性。
 楼主| RF、龙龙 发表于 2016-3-29 17:13 | 显示全部楼层
NE5532 发表于 2016-3-29 14:53
这个,又的单片机是可以配置的,配置成唤醒以后只运行中断服务程序,或者执行了中断服务程序以后继续执行主 ...

好的,感谢解答
wqiang_qdu 发表于 2016-3-29 23:52 来自手机 | 显示全部楼层
休眠到唤醒,ram数据都丢了,时钟也会变
 楼主| RF、龙龙 发表于 2016-3-30 09:03 | 显示全部楼层
wqiang_qdu 发表于 2016-3-29 23:52
休眠到唤醒,ram数据都丢了,时钟也会变

所以每次唤醒之后,程序还是从主函数中依次执行  是吧
 楼主| RF、龙龙 发表于 2016-3-30 10:59 | 显示全部楼层
NE5532 发表于 2016-3-29 11:22
这么短的时间不准确,考虑RTC唤醒相关寄存器是否需要重新设置,或者是否有程序意外修改了这些寄存器的值。 ...

RTC定时30秒误差为1毫秒,算精确吗。
NE5532 发表于 2016-3-30 11:20 | 显示全部楼层
你RTC用的什么时钟源来驱动的?时钟源自己的精度是多少?
 楼主| RF、龙龙 发表于 2016-3-30 11:26 | 显示全部楼层
NE5532 发表于 2016-3-30 11:20
你RTC用的什么时钟源来驱动的?时钟源自己的精度是多少?

外部晶振,好像精度是100ppm吧
wqiang_qdu 发表于 2016-3-30 11:29 | 显示全部楼层
RF、龙龙 发表于 2016-3-30 09:03
所以每次唤醒之后,程序还是从主函数中依次执行  是吧

以前写的一篇**,你可以参考一下http://blog.csdn.net/beep_/article/details/47975227
 楼主| RF、龙龙 发表于 2016-3-30 11:31 | 显示全部楼层
wqiang_qdu 发表于 2016-3-30 11:29
以前写的一篇**,你可以参考一下http://blog.csdn.net/beep_/article/details/47975227 ...

谢谢
NE5532 发表于 2016-3-30 15:12 | 显示全部楼层
如果是外部晶体,误差是算比较大的,检查寄存器分频设置以及是否有其他的程序占用了CPU时间,另外提示楼主,MCU唤醒也需要时间的。
 楼主| RF、龙龙 发表于 2016-3-30 16:42 | 显示全部楼层
NE5532 发表于 2016-3-30 15:12
如果是外部晶体,误差是算比较大的,检查寄存器分频设置以及是否有其他的程序占用了CPU时间,另外提示楼主 ...

我实现的功能其实很简单,就是定时唤醒,发送1组数据,然后继续休眠。但发送这一组数据肯定也是占用CPU时间的呀,在弱弱的问一句,那个定时的时间这样配置正确吗?RTC_WUTRH=30>>8;  RTC_WUTRL=30;定时30s,这个定时时间与我们平时的那些定时器的定时时间计算方法一样吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

38

主题

173

帖子

0

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