当前位置:首页 > 问问

stm32什么时候配置hse stm32时钟配置需要启用HSE

1、HSE的含义及配置

首先,我们需要明确HSE是指高速外部时钟,可以提供精准的时钟信号,大致的范围在4M~26Mhz之间,使用HSE时需要配置相应的晶振。在STM32的配置中,需要先使能HSE外部时钟,然后通过PLL倍频来获得我们需要的系统时钟频率。

HSE的配置过程如下:

  1. 需要在RCC寄存器中使能HSE外部时钟:RCC_CR |= RCC_CR_HSEON;
  2. 等待HSE时钟稳定:while(!(RCC_CR & RCC_CR_HSERDY));
  3. 为PLL倍频器设置HSE作为时钟源,即PLLSRC选择HSE:RCC_PLLCFGR |= RCC_PLLCFGR_PLLSRC_HSE;
  4. 配置PLL倍频系数,计算得到系统需要的时钟频率:RCC_PLLCFGR |= RCC_PLLCFGR_PLLM_8|RCC_PLLCFGR_PLLN_336|RCC_PLLCFGR_PLLP_2|RCC_PLLCFGR_PLLQ_7;

2、何时需要配置HSE

在STM32的系统中,如果需要获得更高的时钟精度和稳定性,那么就需要使用HSE外部时钟,并且进行合适的配置。具体而言有以下几种情况:

  1. 使用USB功能时,必须使用HSE外部时钟源,并且时钟频率在被12Mhz或48Mhz;
  2. 当系统需要更高的精度和稳定性时,需要使用HSE进行时钟同步;
  3. 在使用串口进行通信时,可以使用HSE外部时钟提供更准确的时钟源;
  4. 在某些特殊应用场景下,HSE可以为系统带来更高的性能和稳定性。

3、HSE的优缺点

在使用STM32系统时,HSE外部时钟源有以下几个优点:

  1. 提供更高的时钟精度和稳定性;
  2. 使得系统在USB应用、网络应用等性能要求较高的场景下,获得更好的表现;
  3. 支持更高的时钟频率,使得系统的运行速度更快。

但是,HSE也有对应的缺点:

  1. 使用HSE需要安装晶振,增加了系统成本和调试难度;
  2. 在晶振选型不当、或者外部环境变化较大时,时钟可能会出现较大波动;
  3. 不支持自动切换功能,需要手动切换时钟源。

4、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系统的时钟配置就完成了,可以对系统进行测试和使用。

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:fendou3451@163.com
标签:

  • 关注微信

相关文章