stm32f103 RTC初始化问题?
stm32f103,晶振32.768HZ旁边的两个10PF电容没焊,导致系统在开机初始化RTC时失败,就一直卡在RTC初始化程序,导致进不了系统,RTC程序如何调整,才能使RTC初始化失败也能顺利进入系统??
void RTC_Configuration(void)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR|RCC_APB1Periph_BKP,ENABLE);
PWR_BackupAccessCmd(ENABLE);
RCC_LSEConfig(RCC_LSE_ON);
while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET){;}
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);
RCC_RTCCLKCmd(ENABLE);
RTC_WaitForSynchro();
RTC_WaitForLastTask();
RTC_SetPrescaler(32767);
RTC_WaitForLastTask();
RTC_ITConfig(RTC_IT_SEC, ENABLE);
RTC_WaitForLastTask();
}
单步看走到哪一步,进入函数看看,有死循环的 wudianjun2001 发表于 2019-6-21 10:53
单步看走到哪一步,进入函数看看,有死循环的
知道程序在这条while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET){;} 里面死循环,
程序该如何调整,RTC初始化失败退出死循环?? 这里加超时机制,LSE启动失败以后,切换到LSI配置RTC。现在是MCU检测不到LSE的时钟。 qazplm3218 发表于 2019-6-21 11:01
知道程序在这条while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET){;} 里面死循环,
程序该如何调整, ...
那只能修改程序了,while里面加个条件判断,多少次后退出循环。并且加个标志变量,用来指示RTC时钟是否正常。在主程序中判断标志变量,是否允许RTC相关操作。
页:
[1]