STM32重新配置时钟需要注意的事情
因为项目中需要将STM32使用内部HSI初始化,对PLL芯片配置后再使用PLL产生的信号作为HSE,重新配置STM32的时钟,此时发现程序卡在了
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}
这里。然后看了官方的RCC例程后发现了需要
1、设置时钟源为内部时钟
2、初始化锁相环
3、切回外部时钟源
于是在二次配置时钟的函数内锁相环初始化前添加了以下语句,正常工作
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK)
{
Error_Handler();
}