打印

精确到ms的实时时间怎样做最好?

[复制链接]
3440|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mousie|  楼主 | 2010-12-20 15:16 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 mousie 于 2010-12-20 15:21 编辑

如题,RTC数秒很容易,精确到ms就不太好弄了吧?
目前我想到两种方案,一种是systick设成ms中断,每次中断变量加一,查询时间就直接查变量;另一种是RTC秒中断,在RTC_IRQHandler里作SysTick_CounterCmd(SysTick_Counter_Clear);查询时间时再把systick计数器里的值换算成ms。前一种方案计算简单但是中断频繁,后一种方案计算麻烦但是中断少,这两种方案哪个好呢?有没有不用频繁中断就能达到目的的方法呢?
沙发
mousie|  楼主 | 2010-12-21 15:46 | 显示全部楼层
参考2楼,systick设成1s自动重装载来记ms。现在还有一个问题,我在秒中断清systick计数器,是为了保证systick和RTC同步,如何保证这两个计数器的计时起点一致呢?即保证systick正好记到1000ms时RTC计数器+1?

使用特权

评论回复
板凳
mousie|  楼主 | 2010-12-22 09:19 | 显示全部楼层
不用中断可以吗?让systick每秒自动重装载来记ms。只是不知道这样如何
保证systick和RTC同步,保证这两个计数器的计时起点一致?即保证systick正好记到1000ms时RTC计数器+1?

使用特权

评论回复
地板
mousie|  楼主 | 2010-12-24 11:19 | 显示全部楼层
RTC_DIV确实是个好办法,并且已经实验成功了。
但是我现在还是比较倾向systick作ms中断了。
不过因为程序还需要ms定时,在一条操作指定若干ms之后做另一条操作。这个是应该用systick记ms比较好吧,所以我才考虑干脆让systick一直都中断算了。现在我想了解一下,如果让systick一直ms中断,对CPU是否有很大影响呢?或者我查时间的时候用RTC_DIV,需要计时时再让systick中断计时?

使用特权

评论回复
5
mousie|  楼主 | 2010-12-24 13:01 | 显示全部楼层
中断里只做变量++

使用特权

评论回复
6
mousie|  楼主 | 2011-1-4 16:22 | 显示全部楼层
我最后还是用的ms中断
发现一个特别奇怪的事情:我用RTC时钟计时时,ms计时挺准确,但是一进到秒位时总感觉有几十ms的推迟,每次读时间应该在几秒零几十ms的时候总是只能读到几秒。不知哪的问题

使用特权

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

本版积分规则

0

主题

63

帖子

1

粉丝