首先,我们需要明确HSE是指高速外部时钟,可以提供精准的时钟信号,大致的范围在4M~26Mhz之间,使用HSE时需要配置相应的晶振。在STM32的配置中,需要先使能HSE外部时钟,然后通过PLL倍频来获得我们需要的系统时钟频率。
HSE的配置过程如下:
在STM32的系统中,如果需要获得更高的时钟精度和稳定性,那么就需要使用HSE外部时钟,并且进行合适的配置。具体而言有以下几种情况:
在使用STM32系统时,HSE外部时钟源有以下几个优点:
但是,HSE也有对应的缺点:
下面以一个使用HSE时钟源的stm32f407系统为例进行具体的配置。
首先,我们需要在system_stm32f4xx.c文件中设置时钟源和倍频值:
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLM = 8;
RCC_OscInitStruct.PLL.PLLN = 336;
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
RCC_OscInitStruct.PLL.PLLQ = 7;
if(HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
//初始化失败
}
然后,在bsp.c文件中开启HSE时钟源:
RCC_OscInitTypeDef RCC_OscInitStruct; RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLM = 8;
RCC_OscInitStruct.PLL.PLLN = 336;
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
RCC_OscInitStruct.PLL.PLLQ = 7;
HAL_RCC_OscConfig(&RCC_OscInitStruct);
通过以上步骤,stm32f407系统的时钟配置就完成了,可以对系统进行测试和使用。