一、选择时钟源为LSI
二、频率为32.768kHz
三、配置注意:
1.电源管理时钟

2.RTC备份寄存器(每次上电先检测RTC之前是否初始化过)

3.时钟源:LSE or LSI

4.写保护
5.编辑模式
6.日期时间获取
四、代码
void RTC_SetDateTime(uint8_t year, uint8_t month, uint8_t date, uint8_t week, uint8_t hour, uint8_t minute, uint8_t second, uint8_t RTC_H12);
void RTC_DateTimeGet(uint8_t *year, uint8_t *month, uint8_t *date, uint8_t *week, uint8_t *hour, uint8_t *minute, uint8_t *second);
void RTC_CheckInit(void);
uint8_t year,month,date,week,hour,minute,second;
RTC_DateTimeGet(&year,&month,&date,&week,&hour,&minute,&second);
printf("the date is : \r\n");
printf("%d-%d-%d %d\r\n",year,month,date,week);
printf("the time is : \r\n");
printf("%d:%d:%d \r\n",hour,minute,second);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);
PWR_BackupAccessCmd(ENABLE);
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);
if(RTC_ReadBackupRegister(RTC_BKP_DR0)!=0x2003)
printf("SET TIME...\r\n");
RTC_SetDateTime(24,4,25,4,14,30,15,RTC_H12_AM);
printf("SET TIME END\r\n");
PWR_BackupAccessCmd(DISABLE);
void RTC_SetDateTime(uint8_t year, uint8_t month, uint8_t date, uint8_t week, uint8_t hour, uint8_t minute, uint8_t second, uint8_t RTC_H12)
RTC_WriteProtectionCmd(DISABLE);
RTC_InitTypeDef RTC_InitStruct;
RTC_InitStruct.RTC_AsynchPrediv=0x7F;
RTC_InitStruct.RTC_HourFormat=RTC_HourFormat_24;
RTC_InitStruct.RTC_SynchPrediv=0xFF;
RTC_Init(&RTC_InitStruct);
RTC_TimeTypeDef RTC_TimeStruct;
RTC_TimeStruct.RTC_H12=RTC_H12;
RTC_TimeStruct.RTC_Hours=hour;
RTC_TimeStruct.RTC_Minutes=minute;
RTC_TimeStruct.RTC_Seconds=second;
RTC_SetTime(RTC_Format_BIN,&RTC_TimeStruct);
RTC_DateTypeDef RTC_DateStruct;
RTC_DateStruct.RTC_Date=date;
RTC_DateStruct.RTC_Month=month;
RTC_DateStruct.RTC_WeekDay=week;
RTC_DateStruct.RTC_Year=year;
RTC_SetDate(RTC_Format_BIN,&RTC_DateStruct);
RTC_WriteBackupRegister(RTC_BKP_DR0,0x2003);
RTC_WriteProtectionCmd(ENABLE);
void RTC_DateTimeGet(uint8_t *year, uint8_t *month, uint8_t *date, uint8_t *week, uint8_t *hour, uint8_t *minute, uint8_t *second)
RTC_DateTypeDef RTC_DateStruct;
RTC_GetDate(RTC_Format_BIN,&RTC_DateStruct);
*year=RTC_DateStruct.RTC_Year;
*month=RTC_DateStruct.RTC_Month;
*date=RTC_DateStruct.RTC_Date;
*week=RTC_DateStruct.RTC_WeekDay;
RTC_TimeTypeDef RTC_TimeStruct;
RTC_GetTime(RTC_Format_BIN,&RTC_TimeStruct);
*hour=RTC_TimeStruct.RTC_Hours;
*minute=RTC_TimeStruct.RTC_Minutes;
*second=RTC_TimeStruct.RTC_Seconds;
