博客首页 | 排行榜 |

wolaiye945的博客

我的STM32F学习之路

个人档案
博文分类
【原创】STM32实时时钟RTC探究1  2009-02-05 17:19
    本来以为RTC可能挺简单的(因为看手册上的函数少,篇幅小),现在发现实在是大错特错,本想捏软柿子找自信,结果被虐了。研究了两个小时,才基本搞明白原理和初始化方法...不过感觉已经迈进了一大步了,看来这次要写连载啦,哈哈~

    在此总结一下第一阶段,希望对做同样东西的朋友有帮助。
    说RTC复杂是因为它不仅仅是RTC,还涉及之前的RCC和备份寄存器BKP,加起来内容快赶上SDIO了。而且看懂了之后不得不说RTC其实做得不够人性化,很多函数还要自己来写,不如时钟芯片来得方便...看来是给穷人预备的...(现在时钟芯片几个钱?)
    首先就是要注意一个很重要的备份寄存器BKP_DR1,他解决了一个首要问题,就是判断RTC是否已经被设置过。因为RTC跟其他计时器不同,它是使用纽扣电池单独供电工作,所以它不能每次上电或者复位都被重置,那样就失去了实时的作用,要根据用户的判断来适当的重新设定。其他的详细看手册吧,RM里讲的很详细。
    然后就是初始化顺序,有一些时序上的问题需要注意,合理的使用两个等待函数来避免写入的错误。初始化配置流程如下:
1.  查询RTOFF位,直到RTOFF的值变为’1’
2.  置CNF值为1,进入配置模式
3.  对一个或多个RTC寄存器进行写操作
4.  清除CNF标志位,退出配置模式
5.  查询RTOFF,直至RTOFF位变为’1’以确认写操作已经完成。
仅当CNF标志位被清除时,写操作才能进行,这个过程至少需要3个RTCCLK周期。

     最后的收获就是用万利例程的心得,有一个stm32f10x_conf.h的文件是一个总开关的作用,里面有很多宏定义,都是关于各个模块是否工作的定义。例如RTC在E板的例程中没有默认加载,就没有开启,需要你自己添加文件,并修改对应的宏定义。

     终于有收获啦,希望是一个好的开始。欢迎各位留言交流,我一直坚信有交流才会有进步...否则感觉特别孤独~~祝各位好运~加油~
类别:心得体会 |
上一篇:【原创】STM32实时时钟RTC探究2 | 下一篇:杂谈
以下网友评论只代表其个人观点,不代表本网站的观点或立场