初级会员

- 积分
- 134
- 金钱
- 134
- 注册时间
- 2015-6-1
- 在线时间
- 21 小时
|
用miniStm32f103根据原子哥RTC示例程序修改成LSI作为RTC的时钟源,发现
程序中 BKP_WriteBackupRegister(BKP_DR1, 0X5050);函数导致程序无法运行,
当把BKP_ReadBackupRegister(BKP_DR1) != 0x5050,0x5050改成其它数字就可以正常运行,
请问是怎么回事
u8 RTC_Init(void)
{
u8 temp=0;
if (BKP_ReadBackupRegister(BKP_DR1) != 0x5050)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
PWR_BackupAccessCmd(ENABLE);
BKP_DeInit();
//---------------------------
// RCC_LSEConfig(RCC_LSE_ON);
RCC_LSICmd(ENABLE);
//----------------------------------------------------
// while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)
while (RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET)
{
temp++;
delay_ms(10);
}
if(temp>=250){return 1;}
// RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);
RCC_RTCCLKCmd(ENABLE);
RTC_WaitForLastTask();
RTC_WaitForSynchro();
RTC_ITConfig(RTC_IT_SEC, ENABLE);
RTC_WaitForLastTask();
RTC_EnterConfigMode();
//// RTC_SetPrescaler(32767);
RTC_SetPrescaler(40000);
RTC_WaitForLastTask();
RTC_Set(2016,12,13,0,0,0);
RTC_ExitConfigMode();
BKP_WriteBackupRegister(BKP_DR1, 0X5050);
}
else
{
RTC_WaitForSynchro();
RTC_ITConfig(RTC_IT_SEC, ENABLE);
RTC_WaitForLastTask();
}
RTC_NVIC_Config();
RTC_Get();
return 0; //ok
}
|
|