今天回学校了,参加建模,以后的几天基本没时间学这个了,建模以后再接着看。
对于这STM32也感觉很迷茫了,总之是感觉要学的东西太多,现在虽然学了一点,有点入门了,不过只是在一些些很基本的应用上。
RTC时钟实际上可以看做是一个独立的定时器。
RTC的时钟源可以是HSE/128,LSE或者LSI时钟,这个是由RCC_BDCR(备份区域控制寄存器)来选择的。
对于RTC来说一般用LSE,LSE是一个32.768kHz的时钟源,在VDD掉电的情况下,由VBAT维持供电RTC也可以正常工作。
在初始化的过程中要启用电源管理和BKP备份器的时钟,使其系统掉电了,BKP和RTC还能继续工作,RTC继续计时。
RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP|RCC_APB1Periph_PWR,
ENABLE);
下面是RTC初始化程序
void RTC_configuration()
{ //允许PWR和BKP时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP|RCC_APB1Periph_PWR,
ENABLE);
//允许访问BKP
PWR_BackupAccessCmd(ENABLE);
BKP_DeInit();
//允许LSE
RCC_LSEConfig(RCC_LSE_ON);
//等待LSE就绪
while(RCC_GetFlagStatus(RCC_FLAG_LSERDY)==RESET);
//RTC使用LSE作为时钟
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);
//RTC的时钟开启
RCC_RTCCLKCmd(ENABLE);
//等待RTC寄存器同步
RTC_WaitForSynchro();
RTC_WaitForLastTask();
//RTC开中断,RTC中断有三种,这里采用秒中断
RTC_ITConfig(RTC_IT_SEC, ENABLE);
RTC_WaitForLastTask();//
RTC_SetPrescaler(32767);
//RTC预分频RTC period = RTCCLK/RTC_PR =
(32.768 KHz)/(32767+1)
RTC_WaitForLastTask();
}
这样,RTC就启动了。
整个的计时程序还没来得及弄...过几天补上