CH32V208WBU6基于CH32V20xEVT\EVT\EXAM\BLE\Peripheral_ETH\APP,调用RTC_init()函数,会走到temp>=250的判断里,每次启动时都要多耗时10s~20s,请问这是什么问题?是否可以启动时缩短时间,或者第二次启动时缩短RTC_init()时间,目前我们硬件上是用单独的电池给内置rtc供电。
u8 RTC_Init(void)
{
u8 temp = 0;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
PWR_BackupAccessCmd(ENABLE);
/* Is it the first configuration */
BKP_DeInit();
RCC_LSEConfig(RCC_LSE_ON);
while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET && temp < 250)
{
temp++;
Delay_Ms(20);
}
if(temp >= 250)
{
printf("In RTC_Init temp = %d\n", temp); //==================>会走到这里
return 1;
}
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);
RCC_RTCCLKCmd(ENABLE);
RTC_WaitForLastTask();
RTC_WaitForSynchro();
// RTC_ITConfig(RTC_IT_ALR, ENABLE);
RTC_ITConfig(RTC_IT_SEC, ENABLE);
RTC_WaitForLastTask();
RTC_EnterConfigMode();
RTC_SetPrescaler(32767);
RTC_WaitForLastTask();
printf("start RTC_Get year to decide if need to do RTC_Set\n");
RTC_Get();
printf("after RTC_Get year \n");
if(calendar.w_year < 2023)
{
RTC_Set(2023, 10, 8, 13, 58, 55); /* Setup Time */
printf("after RTC_Set if RTC_Get year < 2023 \n");
}
RTC_ExitConfigMode();
BKP_WriteBackupRegister(BKP_DR1, 0XA1A1);
RTC_NVIC_Config();
RTC_Get();
return 0;
}