



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
STM32笔记(五)RTC的初始化这次是RTC的笔记:)RTC这东西晕晕的,因为一个模块涉及到了RTC,BKP,RCC多个模块,之间的关系让人有点模糊入门的知识请大家看手册,我来总结:总之,RTC只是个能靠电池维持运行的32位定时器over!所以,使用时要注意以下问题:1. 上电后要检查备份电池有没有断过电。如何检查? 恩,RTC的示例代码中已经明示: 往备份域寄存器中写一个特殊的字符,备份域寄存器是和RTC一起在断电下能保存数据的。 上电后检查下这个特殊字符是否还存在,如果存在,ok,RTC的数据应该也没丢,不需要重新配置它 如果那个特殊字符丢了,那RTC的定时器数据一定也丢了,那我们要重新来配置RTC了 这个过程包括时钟使能、RTC时钟源切换、设置分频系数等等,这个可以参考FWLibexampleRTCCalendar的代码 在我的这个实例里,检查备份域掉电在Init.c的RTC_Conig()中,函数内若检测到BKP掉电,则会调用RTC_Configuration()2. 因为RTC的一些设置是保存在后备域中的,so,操作RTC的设置寄存器前,要打开后备域模块中的写保护功能。3. RTC设定值写入前后都要检查命令有没有完成,调用RTC_WaitForLastTask();具体的RTC初始化代码如下:/ RTC时钟初始化!/* Function Name : RTC_Configuration* Description : 来重新配置RTC和BKP,仅在检测到后备寄存器数据丢失时使用* Input : None* Output : None* Return : None*/void RTC_Configuration(void) /启用PWR和BKP的时钟(from APB1) RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); /后备域解锁 PWR_BackupAccessCmd(ENABLE); /备份寄存器模块复位 BKP_DeInit(); /外部32.768K其哟偶那个 RCC_LSEConfig(RCC_LSE_ON); /等待稳定 while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) = RESET); /RTC时钟源配置成LSE(外部32.768K) RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); /RTC开启 RCC_RTCCLKCmd(ENABLE); /开启后需要等待APB1时钟与RTC时钟同步,才能读写寄存器 RTC_WaitForSynchro(); /读写寄存器前,要确定上一个操作已经结束 RTC_WaitForLastTask(); /设置RTC分频器,使RTC时钟为1Hz /RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1) RTC_SetPrescaler(32767); /等待寄存器写入完成 RTC_WaitForLastTask(); /使能秒中断 RTC_ITConfig(RTC_IT_SEC, ENABLE); /等待写入完成 RTC_WaitForLastTask(); return;/* Function Name : RTC_Config* Description : 上电时调用本函数,自动检查是否需要RTC初始化, * 若需要重新初始化RTC,则调用RTC_Configuration()完成相应操作* Input : None* Output : None* Return : None*/void RTC_Config(void) /我们在BKP的后备寄存器1中,存了一个特殊字符0xA5A5 /第一次上电或后备电源掉电后,该寄存器数据丢失, /表明RTC数据丢失,需要重新配置 if (BKP_ReadBackupRegister(BKP_DR1) != 0xA5A5) /重新配置RTC RTC_Configuration(); /配置完成后,向后备寄存器中写特殊字符0xA5A5 BKP_WriteBackupRegister(BKP_DR1, 0xA5A5); else /若后备寄存器没有掉电,则无需重新配置RTC /这里我们可以利用RCC_GetFlagStatus()函数查看本次复位类型 if (RCC_GetFlagStatus(RCC_FLAG_PORRST) != RESET) /这是上电复位 else if (RCC_GetFlagStatus(RCC_FLAG_PINRST) != RESET) /这是外部RST管脚复位 /清除RCC中复位标志 RCC_ClearFlag(); /虽然RTC模块不需要重新配置,且掉电后依靠后备电池依然运行 /但是每次上电后,还是要使能RTCCLK? /RCC_RTCCLKCmd(ENABLE); /等待RTC时钟与APB1时钟同步 /RTC_WaitForSynchro(); /使能秒中断 RTC_ITConfig(RTC_IT_SEC, ENABLE); /等待操作完成 RTC_WaitForLastTask(); #ifdef RTCClockOutput_Enable /* Enable PWR and BKP clocks */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); /* Allow access to BKP Domain */ PWR_BackupAccessCmd(ENABLE); /* Disable the Tamper Pin */ BKP_Tampe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 锅炉设备试压工压力容器操作特项考核试卷及答案
- 非典捐赠协议书
- 钟表及计时仪器制造工跨部门项目协调考核试卷及答案
- 隧道工消防考核试卷及答案
- 公司速录师岗位职业健康及安全技术规程
- 2026届广东省云浮云城区五校联考七年级数学第一学期期末调研试题含解析
- 河北省保定市安国市2026届九年级数学第一学期期末监测模拟试题含解析
- 2025家居用品(沙发)购销合同
- 2025房屋租赁终止合同模板
- 2025房屋租赁合同范本范文
- 2025少先队基础知识题库(含答案)
- 人教版九年级物理上-各单元综合测试卷含答案共五套
- 三折页设计课件
- 防诈骗消防安全知识培训课件
- 2025至2030年川渝地区成品油行业市场运行现状及未来发展预测报告
- 减肥与能量代谢课件
- 《三借芭蕉扇》课件
- 《生态系统服务评估》课件
- eOps自动化运维平台介绍
- 心脏病患者非心脏手术麻醉管理
- 公路交通安全设施工高级工培训内容
评论
0/150
提交评论