STM32 RTC时钟 必须要用中断吗? 50

我知道RTC时钟就是一个计数器,我想得到年月日,时分秒的信息,必须要用到中断吗?因为还开了别的中断源。... 我知道RTC时钟就是一个计数器,我想得到年月日,时分秒的信息,必须要用到中断吗?因为还开了别的中断源。 展开
 我来答
百度网友cc21aee
推荐于2017-11-26 · TA获得超过2044个赞
知道小有建树答主
回答量:1273
采纳率:100%
帮助的人:1254万
展开全部
rtc就是一个32位的计数器,只不过它的秒计时比一般定时器准一些,输入时钟震荡一次寄存器加1,如果开中断的话会进一次中断,但是这个寄存器的值到了23*3600+59*60+59之后(也就是计数1天后)不会自动清零,需要软件清零,像你追问的是可以这样用的,中断可以不开,
更多追问追答
追问
如果软件不清零,时分秒不准吧?
追答
貌似没有,网上好像有关于年历的算法,可以移植到上边。
原子的STM32开发指南 库函数版 RTC例程里边有日历的简单算法,从1970年开始计算的。
ATF144X
2014-01-22 · TA获得超过1.2万个赞
知道大有可为答主
回答量:5344
采纳率:77%
帮助的人:4783万
展开全部
不一定啊……反正我开alarm中断怎么都不成,但是秒中断可以开的。
或者别的中断(比如TIM、systick等等)里去读取时间,也不错。
查询方式,隔一段时间读取也行。
追问
问题时不开中断的话,到了23:59:59 秒,不会修正到00:00:00,吧?
再问一句,RTC计数器是每秒++的吧?
能不能只把RTC当做一个电池驱动的计数器,把刚输入的时间设为基准,计数器里是0,然后计数器每秒++,查询时,读取计数器的值,然后换算成年月日????
追答
STMF10x的RTC就是一个单纯的32bit计数器,假设你在1月1日的00:00:00启动,在到23:59:59时实际的数字是86399,到1月2日的00:00:01时就变成86401了……就是说不会修正为0,但你换算为真正的时分秒时才会出现00:00:00,比如这样的代码:
TimeVar=RTC_GetCounter()%86400;

THH = TimeVar / 3600; /* Compute hours */
TMM = (TimeVar % 3600) / 60; /* Compute minutes */
TSS = (TimeVar % 3600) % 60; /* Compute seconds */
实际转换的办法就是你提到的UNIX时间方式。

STM32F20X或者STM32F40X就是真正的RTC了,和读取DS1302或DS3231里的结果一样,读取到的就是时分秒年月日,比STM32F10X的方便多了。

RTC设置好之后,就是每秒加1的。
将计数换算为当前时间,就是UNIX时间方式。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
谏澎07x
2014-01-22 · TA获得超过282个赞
知道小有建树答主
回答量:191
采纳率:0%
帮助的人:58.4万
展开全部
不一定哦,看你需要的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式