/*******************************************************************************
* Function Name : RTC_Configuration
* Description : Configures the RTC.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void RTC_Configuration(void)
{
char text[20];
int j;
u32 v;
/* Enable PWR and BKP clocks */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
/* Allow access to BKP Domain */
PWR_BackupAccessCmd(ENABLE);
v = BKP_ReadBackupRegister(BKP_DR1);
sprintf(text,"BKP_DR1 = 0x%x\n",v);
for(j=0;text[j] != '\0';j++)
{
TxBuffer1[j] = text[j];
}
TxCounter1 =j;
TxPointer1 = 0;
USART_ITConfig(USART1, USART_IT_TXE, ENABLE);
while(TxPointer1 < TxCounter1)
{
IWDG_ReloadCounter();
__nop();
}
TR_FLAG1 = 0x80;
if (BKP_ReadBackupRegister(BKP_DR1)!=0xA5A5)
{
/* Reset Backup Domain */
BKP_DeInit();
BKP_WriteBackupRegister(BKP_DR2,2008);
BKP_WriteBackupRegister(BKP_DR3,1);
BKP_WriteBackupRegister(BKP_DR4,1);
BKP_WriteBackupRegister(BKP_DR1, 0xA5A5);
RTC_SetCounter(0x0);
/* Enable LSE */
RCC_LSEConfig(RCC_LSE_ON);
/* Wait till LSE is ready */
while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)
{}
/* Select LSE as RTC Clock Source */
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);
/* Enable RTC Clock */
RCC_RTCCLKCmd(ENABLE);
/* Wait for RTC registers synchronization */
RTC_WaitForSynchro();
/* Wait until last write operation on RTC registers has finished */
RTC_WaitForLastTask();
RTC_WaitForSynchro();
RTC_WaitForLastTask();
/* Enable the RTC Second */
RTC_ITConfig(RTC_IT_SEC, ENABLE);
/* Wait until last write operation on RTC registers has finished */
RTC_WaitForLastTask();
/* Set RTC prescaler: set RTC period to 1sec */
RTC_SetPrescaler(32767); /* RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1) */
// RTC_SetPrescaler(16383); /* RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1) */
/* Wait until last write operation on RTC registers has finished */
RTC_WaitForLastTask();
}
else
{
RTC_WaitForLastTask();
/* Enable the RTC Second */
RTC_ITConfig(RTC_IT_SEC, ENABLE);
RTC_WaitForLastTask();
}
CheckForDaysElapsed();
}
这个是RTC配置
|