STM32 RTC 配置解说(原创).pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
STM32 RTC 配置解说(原创)

STM32RTC(实时时钟) 配置 解说 作者:蓝天翔 STM32 - RTC 配置解说 STM32 的RTC 时钟配置 因为涉及了许多的寄存器,如:BKP、PWR、RTC ,弄得很杂乱,现 在由我来做个RTC配置的总结。 RTC简介:RTC是一个实时时钟是一个独立的定时器,RTC模块拥有一组连续计数的计数器, 在相应软件配置下,可以提供时钟、日历的功能。修改计数器的值可以重新设置系统当前的 时间和日期。 配置RTC前需知: BKP: RTC模块和时钟配置系统的寄存器是在后备区域的(即BKP),通过BKP后备区域来存储RTC 配置的数据可以让在系统复位或待机模式下唤醒后 RTC里面配置的数据维持不变。 PWR: PWR为电源的寄存器,我们需要用到的是电源控制寄存器(PWR_CR),通过使能PWR_CR的DBP 位来取消后备区域BKP的写保护。 RTC : 由一组可编程计数器组成,分成两个主要模块。第一个模块是RTC的预分频 模块,它可编程产生最长为1 秒的RTC时间基准TR_CLK 。RTC的预分频模块包含了一个20 位的 可编程分频器(RTC 预分频器) 。如果在RTC_CR寄存器中设置了相应的允许位,则在每个实 时时钟(RTC)TR_CLK 周期中RTC产生一个中断( 秒中断) 。第二个模块是一个32位的可编 程计数器,可被初始 化为当前的系统时间。系统时间按TR_CLK 周期累加并与存储在RTC_ALR寄存器中的可编程 时 间相比较,如果RTC_CR控制寄存器中设置了相应允许位,比较匹配时将产生一个闹钟中断。 STM32RTC(实时时钟) 配置 解说 作者:蓝天翔 需知部分告一段落,如果想更详细的了解可以打开你的stm32 使用手册查看。 下面讲解下配置整体过程: 第一步:通过设置寄存器RCC_APB1ENR的PWREN 和BKPEN位来打开电源和后备接口的时钟 调用库函数: RCC_APB1PeriphClockCmd (RCC_APB1Periph_PWR| RCC_APB1Periph_BKP,ENABLE); 第二步:电源控制寄存器(PWR_CR) 的DBP位来使能对后备寄存器和RTC的访问 调用库函数: PWR_BackupAccessCmd(ENABLE); 第三步:初始化复位BKP寄存器 调用库函数: BKP_DeInit (); 第四步:设置RTCCLK,如下图: 我们需要将RTCCLK 设置为 LSEOSC 这个32.768KHZ的晶振。 调用的库函数: RCC_LSEConfig (RCC_LSE_ON); While(!RCC_GetFlagStatus(RCC_FLAG_HSERDY));//设置后需要等待启动 第五步:将RTC输入时钟 选择为LSE时钟 输入并使能RTC,等待RTC和APB 时钟同步 调用库函数: STM32RTC(实时时钟) 配置 解说 作者:蓝天翔 RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);//选择LSE为RTC设备 的 时钟 RCC_RTCCLKCmd (ENABLE);//使能RTC RTC_WaitForSynchro();//等待同步 第六步:配置RTC 时钟 参数。 1. 查询RTOFF位,直到RTOFF的值变为’1’ 2. 置CNF值为1 ,进入配置模式 3. 对一个或多个RTC寄存器进行写操作 4. 清除CNF标志位,退出配置模式 5. 查询RTOFF,直至RTOFF位变为’1’ 以确认写操作已经完成。 仅当CNF标志位被清除时,写操作才能进行,这个过程至少需要3个RTCCLK 周期。 好!就按照上述步骤 用 库函数来配置: /*1. 查询RTOFF位,直到RTOFF的值变为’1’ */ RTC_WaitForLastTask();//大家可以打开函数库看看这个函数内部的代码,就是查询 RTOFF 的值 /* 2. 置CNF值为1 ,进入配置模式 3. 对一个或多个RTC寄存器进行写操作 4. 清除CNF标志位,退出配置模式 */ RTC_SetPrescaler(32767); // 这里配置了预分频值,大家可以打开函数库看看这个函数的

文档评论(0)

duyingjie1 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档