问题描述:引导程序正常运行,跳转到主程序后,主程序卡在SystemClock_Config(); 时钟初始化函数中。
已解决。
硬件环境:STM32F407
软件环境:stm32cubeIDE1.40
开发库:STM32Cube FW_F4 V1.25.1
原因:
时钟配置是这么写的:
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI|RCC_OSCILLATORTYPE_HSE;
并非只选择外部时钟。
随后一直卡在该循环之中:
/* Wait till PLL is ready */
while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
{
if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)
{
return HAL_TIMEOUT;
}
}
经过测量,外部晶振未工作,更换外部晶振后,主程序正常运行。
疑惑:
cubeIDE配出来的工程,外部晶振出现故障时,引导程序运行时使用的是内部晶振。跳转主程序后,为什么又无法再次配置成功?