您的位置 首页 新品

STM32的RTC装备和起振问题

RTC配置:1打开电源管理和备份寄存器时钟。这个在RCC配置中打开。RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR

RTC装备

1.翻开电源办理和备份寄存器时钟。这个在RCC装备中翻开。

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);

2.使能RTC和备份寄存器的拜访(复位默许封闭)。

PWR_BackupAccessCmd(ENABLE);

3.查看电池是否断电过(是否RTC初始化过),经过的话直接跳到第4步。

if (BKP_ReadBackupRegister(BKP_DR1) != 0xA5A5)

{

A. BKP_DeInit();//BKP寄存器悉数设为缺省值

B. RCC_LSEConfig(RCC_LSE_ON); //RCC翻开了LSE时钟
C. while(RCC_GetFlagStatus(RCC_FLAG_LSERDY)==RESET);//等候LSE安排妥当,假如谐振不对,就会死在这里.

D. RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);//RTC运用时钟源LSE
E. RCC_RTCCLKCmd(ENABLE);//RTC的时钟敞开

F. RTC_WaitForSynchro();//RTC等候同步

G. RTC_WaitForLastTask();//等候安排妥当

H. RTC_ITConfig(RTC_IT_SEC, ENABLE); // 使能RTC秒中止

I. RTC_SetPrescaler(32767);//RTC预分频,32768HZ

J. RTC_WaitForLastTask();

K. BKP_WriteBackupRegister(BKP_DR1, 0xA5A5);//往备份域寄存器中写一个特别的字符

L. SetDateTime((TagDateTime *)&DefaultSystime); //设置一个初始时刻

PWR_BackupAccessCmd(DISABLE);//制止RTC后备寄存器的写???

M. RCC_ClearFlag(); //铲除RCC重启标志

}

else

{

4.RTC_WaitForSynchro();//RTC等候同步

5.AdjustRtcTime();//装备体系时刻,主要是考虑到断电重启怎么康复体系时刻

6.RTC_ITConfig(RTC_IT_SEC, ENABLE); // 使能RTC秒中止

7.RTC_WaitForLastTask();

PWR_BackupAccessCmd(DISABLE);//制止RTC后备寄存器的写???

8.RCC_ClearFlag(); //铲除RCC重启标志

}

对了条件还必须对RTC中止进行装备:


NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

留意:
1. 上电后要查看备份电池有没有断过电。怎么查看? 恩,RTC的示例代码中现已明示:
往备份域寄存器中写一个特别的字符(0xA5A5),备份域寄存器是和RTC一同在断电下能保存数据的。
上电后查看下这个特别字符是否还存在,假如存在,ok,RTC的数据应该也没丢,不需要重新装备它
假如那个特别字符丢了,那RTC的定时器数据必定也丢了,那咱们要重新来装备RTC了
这个进程包含时钟使能、RTC时钟源切换、设置分频系数等等,这个能够参阅FWLibexampleRTCCalendar的代码
在我的这个实例里,查看备份域掉电在Init.c的RTC_Conig()中,函数内若检测到BKP掉电,则会调用RTC_Configuration()

2. 由于RTC的一些设置是保存在后备域中的,so,操作RTC的设置寄存器前,要翻开后备域模块中的写保护功用。
3. RTC设定值写入前后都要查看指令有没有完结,调用RTC_WaitForLastTask();

STM32的32.768K 晶振,必需要当心!!

必定要运用6pf负载电容的晶振。
STM32的32.768Hz的晶振要求运用6pf负载电容的晶振,也就是说购买时要指定这种晶振,一起晶振两头的电容也要用6pf的电容
实验的时分发现12.5pf的晶振如同也能作业,其实不然,环境温度一下降,晶振发动时刻就明显加长(其实是在加热,温度够热差不多能发动起来)。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/262549.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部