求助STM32F103VC VBAT用3.0V电池供电,VDD掉电时,32.768晶体停振
同时Backup中的内容消失。u8 RTC_Init(void)
{
u8 temp=0;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
BackupData=BKP_ReadBackupRegister(BKP_DR1);
if (BackupData != 0x4321)
{
// Red_LED_On();
PWR_BackupAccessCmd(ENABLE);
BKP_DeInit();
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); //Ò»µ©Ñ¡¶¨²»Äܸü¸Ä£¬³ý·Ç¸´Î»ºó±¸Óò
RCC_LSEConfig(RCC_LSE_ON); //±ØÐëÔÚÇ°ÃæµÄº¯ÊýÖ®ºóÓÃ
BKP_TamperPinCmd(DISABLE);
while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)
{
temp++;
Delay_mS(10);
if(temp>=250)
{
return 1;
}
}
RCC_RTCCLKCmd(ENABLE);
// RTC_WaitForLastTask();
RTC_WaitForSynchro();
RTC_WaitForLastTask();
//RTC_ITConfig(RTC_IT_SEC, ENABLE); //±ØÐëÔڸú¯Êýǰµ÷ÓÃÇ°ÃæµÄº¯Êý
RTC_EnterConfigMode();
RTC_WaitForLastTask();
RTC_SetPrescaler(32767); //±ØÐëÔڸú¯Êýǰµ÷ÓÃÇ°ÃæµÄº¯Êý
RTC_WaitForLastTask();
RTC_Set(2017,12,30,07,58,00);
RTC_ExitConfigMode();
RTC_WaitForLastTask();
BKP_WriteBackupRegister(BKP_DR1, 0x4321);
RTC_WaitForLastTask();
BackupData=BKP_ReadBackupRegister(BKP_DR1);
Delay_mS(10);
//PWR_BackupAccessCmd(DISABLE);
Red_LED_Off();
}
else//??????
{
RTC_WaitForSynchro();
RTC_ITConfig(RTC_IT_SEC, ENABLE);
RTC_WaitForLastTask();
}
RTC_Get_Simple();//¸üÐÂʱ¼ä
return 0; //ok
}
查看晶振旁的电容有没有问题,测量电压对不对,或加个电阻在侧
页:
[1]