打印
[STM8]

RTC自动唤醒

[复制链接]
4769|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 | 只看该作者
从哪里开始休眠,唤醒后从哪里执行

使用特权

评论回复
5
RF、龙龙|  楼主 | 2016-3-29 10:58 | 只看该作者
NE5532 发表于 2016-3-29 10:34
继续执行休眠指令后的指令。你的“一次”时间有多长?

哦,30秒的倍数

使用特权

评论回复
6
RF、龙龙|  楼主 | 2016-3-29 10:59 | 只看该作者
wyde518 发表于 2016-3-29 10:52
从哪里开始休眠,唤醒后从哪里执行

哦哦  明白了,谢了

使用特权

评论回复
7
NE5532| | 2016-3-29 11:22 | 只看该作者
这么短的时间不准确,考虑RTC唤醒相关寄存器是否需要重新设置,或者是否有程序意外修改了这些寄存器的值。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
RF、龙龙 + 1 很给力!
8
RF、龙龙|  楼主 | 2016-3-29 11:48 | 只看该作者
NE5532 发表于 2016-3-29 11:22
这么短的时间不准确,考虑RTC唤醒相关寄存器是否需要重新设置,或者是否有程序意外修改了这些寄存器的值。 ...

意思是还是程序的原因呗,行,   我在看看,谢了

使用特权

评论回复
9
RF、龙龙|  楼主 | 2016-3-29 12:01 | 只看该作者
NE5532 发表于 2016-3-29 11:22
这么短的时间不准确,考虑RTC唤醒相关寄存器是否需要重新设置,或者是否有程序意外修改了这些寄存器的值。 ...

大神,我是参考别人的程序,我看他在主函数中的最后才进入了休眠模式,那么意思就是被唤醒之后,只执行中断函数,其他的程序都不执行了是吗。但问题来了,所有唤醒后的功能都在睡眠之前执行的,按照你的说话,唤醒之后,程序从休眠那里开始执行,所有的功能就无法实现呀,但是我运行了程序,发现所有的功能都正常,我感觉每次唤醒之后,程序又是从主函数中从新开始执行的。有劳了。

使用特权

评论回复
10
NE5532| | 2016-3-29 14:53 | 只看该作者
这个,又的单片机是可以配置的,配置成唤醒以后只运行中断服务程序,或者执行了中断服务程序以后继续执行主程序,具体要看你的单片机手册。如果不能配置,那么基本肯定是执行了中断服务程序,然后再执行主程序。所以你程序不能只参考了事,要自己了解所用单片机的特性。

使用特权

评论回复
11
RF、龙龙|  楼主 | 2016-3-29 17:13 | 只看该作者
NE5532 发表于 2016-3-29 14:53
这个,又的单片机是可以配置的,配置成唤醒以后只运行中断服务程序,或者执行了中断服务程序以后继续执行主 ...

好的,感谢解答

使用特权

评论回复
12
wqiang_qdu| | 2016-3-29 23:52 | 只看该作者
休眠到唤醒,ram数据都丢了,时钟也会变

使用特权

评论回复
来自android
13
RF、龙龙|  楼主 | 2016-3-30 09:03 | 只看该作者
wqiang_qdu 发表于 2016-3-29 23:52
休眠到唤醒,ram数据都丢了,时钟也会变

所以每次唤醒之后,程序还是从主函数中依次执行  是吧

使用特权

评论回复
14
RF、龙龙|  楼主 | 2016-3-30 10:59 | 只看该作者
NE5532 发表于 2016-3-29 11:22
这么短的时间不准确,考虑RTC唤醒相关寄存器是否需要重新设置,或者是否有程序意外修改了这些寄存器的值。 ...

RTC定时30秒误差为1毫秒,算精确吗。

使用特权

评论回复
15
NE5532| | 2016-3-30 11:20 | 只看该作者
你RTC用的什么时钟源来驱动的?时钟源自己的精度是多少?

使用特权

评论回复
16
RF、龙龙|  楼主 | 2016-3-30 11:26 | 只看该作者
NE5532 发表于 2016-3-30 11:20
你RTC用的什么时钟源来驱动的?时钟源自己的精度是多少?

外部晶振,好像精度是100ppm吧

使用特权

评论回复
17
wqiang_qdu| | 2016-3-30 11:29 | 只看该作者
RF、龙龙 发表于 2016-3-30 09:03
所以每次唤醒之后,程序还是从主函数中依次执行  是吧

以前写的一篇**,你可以参考一下http://blog.csdn.net/beep_/article/details/47975227

使用特权

评论回复
18
RF、龙龙|  楼主 | 2016-3-30 11:31 | 只看该作者
wqiang_qdu 发表于 2016-3-30 11:29
以前写的一篇**,你可以参考一下http://blog.csdn.net/beep_/article/details/47975227 ...

谢谢

使用特权

评论回复
19
NE5532| | 2016-3-30 15:12 | 只看该作者
如果是外部晶体,误差是算比较大的,检查寄存器分频设置以及是否有其他的程序占用了CPU时间,另外提示楼主,MCU唤醒也需要时间的。

使用特权

评论回复
20
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

粉丝