OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 14079|回复: 2

请教怎么用RTC做1ms的循环定时器

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2012-1-11
在线时间
0 小时
发表于 2012-7-13 02:29:43 | 显示全部楼层 |阅读模式
需要一个(1/1024)秒,即0.9765625ms的循环定时器。
TIM1 ~ 7  的时钟源都是72MHz,做1ms的定时器很方便,但是做0.9765625ms的定时器就不行了, 72M/1024 = 70312.5,有个小数点。原因是72M = 7200,000, 而不是72*1024*1024。这里不能用四舍五入,引入的误差太大了。

时钟源为32.768K的只有RTC, 例程里面都是“秒中断”, 做1秒的定时器没问题, RTC->RLL=32767
但是,我设置RTC->RLL=31, 仍是1秒才中断一次。 设置RTC->ALRL = 32;  alarm中断没有触发。

我是用“ALIENTEK MINISTM32 实验11 RTC实时时钟实验”的code为基础,修改上述两个寄存器。只能做1秒的中断,不能实现小于1秒的中断。

烦请帮忙,我买了两套开发板了,呵呵
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-7-13 09:20:24 | 显示全部楼层
回复【楼主位】shencj:
---------------------------------
修改为31,是可以的,你得把电池去掉,重新上电.否则,因为你以前初始化过一次,是不会再次初始化的.一定要让BKP->DR1!=0X5050这个等式成立,才会进行RTC的初始化设置.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2012-1-11
在线时间
0 小时
 楼主| 发表于 2012-7-13 16:49:38 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
非常感谢,RTC->RLL=31 ,即可触发(1/1024)ms的中断。 比用TIM3 精度好多了。
前两天,一直不行,不知怎么回事。 我还把if(BKP->DR1!=0X5050) 改为if(1)。 不管了,能工作就很好。
原子的support真快啊,谢谢。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 18:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表