打印

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

[复制链接]
2594|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。前一种方案计算简单但是中断频繁,后一种方案计算麻烦但是中断少,这两种方案哪个好呢?有没有不用频繁中断就能达到目的的方法呢?
沙发
IJK| | 2010-12-20 16:30 | 只看该作者
还可以考虑:用RTC加Timer,RTC用于数秒,Timer用于ms计时、且可以不用中断

使用特权

评论回复
板凳
香水城| | 2010-12-20 18:01 | 只看该作者
哈哈,当然是用LZ的后一种方法了,计算是由程序完成,对于你来说麻烦只有一次,以后就一劳永逸了。如果使用前一种方法,则CPU就有麻烦了,因为会频繁被中断。

使用特权

评论回复
地板
秋天落叶| | 2010-12-20 21:02 | 只看该作者
用后一种方法比较好

使用特权

评论回复
5
mousie|  楼主 | 2010-12-21 15:46 | 只看该作者
参考2楼,systick设成1s自动重装载来记ms。现在还有一个问题,我在秒中断清systick计数器,是为了保证systick和RTC同步,如何保证这两个计数器的计时起点一致呢?即保证systick正好记到1000ms时RTC计数器+1?

使用特权

评论回复
6
无冕之王| | 2010-12-21 18:14 | 只看该作者
比较倾向于后一种方案

使用特权

评论回复
7
xsgy123| | 2010-12-21 22:04 | 只看该作者
RTC秒中断比较好一点

使用特权

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

使用特权

评论回复
9
bili| | 2010-12-22 11:25 | 只看该作者
好像不用那么麻烦用到systick吧,RTC本身有个寄存器就是存储当前预分频计数值的。直接查询那个寄存器换算就好了。

使用特权

评论回复
评分
参与人数 1威望 +4 收起 理由
香水城 + 4
10
IJK| | 2010-12-22 12:18 | 只看该作者
好像不用那么麻烦用到systick吧,RTC本身有个寄存器就是存储当前预分频计数值的。直接查询那个寄存器换算就好了。
bili 发表于 2010-12-22 11:25


这是1个好想法,可以查询RTC_DIV寄存器

使用特权

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

使用特权

评论回复
12
香水城| | 2010-12-24 11:52 | 只看该作者
对CPU是否有很大影响?主要要看你在SYSTICK中断中做多少事情,你自己可以测算一下。

使用特权

评论回复
13
mousie|  楼主 | 2010-12-24 13:01 | 只看该作者
中断里只做变量++

使用特权

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

使用特权

评论回复
15
st_beginer| | 2011-1-15 15:27 | 只看该作者
你的sys_tick用错了

使用特权

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

本版积分规则

0

主题

63

帖子

1

粉丝