stm32的系统时钟问题

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-16
stm32为什么要配置系统时钟

简单理解就是,一般来说,STM32内部有一个8MHz的时钟(HSI时钟),系统上电默认的就是使用该时钟来运行程序,但这个内部的8MHz的精度并不高,也就是说有一定的误差。所以一般我们会在STM32芯片外部接一个8MHz的标准晶振(HSE时钟),配置系统时钟就是使用这个外部的HSE时钟经过内部倍频之后作为系统运行的时钟(sysclock),倍频成多少看你的STM32最高能支持多高的时钟频率,STM32f051C8T6(Cortex-M0)支持到48MHz,STM32F103ZET6(Cortex-M3)支持到72MHz。

上面所给的程序是使用内部晶振的,而通常开发板都会使用外部晶振通过倍频使用。

内部晶振最高只能倍频到64MHz,而使用外部晶振能够倍频到72MHz。
如果板子上确实有外部晶振,请使用外部晶振!

使用外部晶振配置实例如下:
使用HSE时钟,程序设置时钟参数流程:
1、将RCC寄存器重新设置为默认值 RCC_DeInit;
2、打开外部高速时钟晶振HSE RCC_HSEConfig(RCC_HSE_ON);
3、等待外部高速时钟晶振工作 HSEStartUpStatus = RCC_WaitForHSEStartUp();
4、设置AHB时钟 RCC_HCLKConfig;
5、设置高速AHB时钟 RCC_PCLK2Config;
6、设置低速速AHB时钟 RCC_PCLK1Config;
7、设置PLL RCC_PLLConfig;
8、打开PLL RCC_PLLCmd(ENABLE);
9、等待PLL工作 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
10、设置系统时钟 RCC_SYSCLKConfig;
11、判断是否PLL是系统时钟 while(RCC_GetSYSCLKSource() != 0x08)
12、打开要使用的外设时钟 RCC_APB2PeriphClockCmd()/RCC_APB1PeriphClockCmd()

嗯!系统时钟有内部时钟和外部时钟!
当我们需要使用外部时钟的时候才需要配置!一般不配置就直接使用内部时钟!

我觉得可能是库版本的问题。我用的是V3.5版本的,在启动代码里有调用系统时钟配置函数,那个函数就把外部的8M晶振倍频为72M了,所以在主函数里就不用多此一举了。

那是使用了内部时钟

你可在程序开始处首先配置时钟,再进行管脚初始化

  • STM32第三章-系统时钟配置
    答:总的来说,启动时的SystemInit函数启动了这场时钟设置的盛宴,而 PLL和SetSysClock则共同构建了系统的时钟架构。虽然在工程模板中通常无需自行进行这些配置,但理解时钟树的内在逻辑,对于深入掌握STM32F429的性能至关重要。
  • stm32程序烧录成功但不运行,卡在系统时钟初始化
    答:您要问的是stm32程序烧录成功但不运行,卡在系统时钟初始化是什么原因吗?时钟配置问题、复位问题。1、检查时钟配置是否正确。根据STM32型号,需要配置HSI、HSE或者LSE等时钟源,错误的时钟配置会导致系统无法正常运行。2、确保复位电路没有问题。检查复位键是否按下,以及复位电路的电阻和电容是否正确连接。
  • stm32系统时钟配置问题,解释为什么用某个外
    答:简单理解就是,一般来说,STM32内部有一个8MHz的时钟(HSI时钟),系统上电默认的就是使用该时钟来运行程序,但这个内部的8MHz的精度并不高,也就是说有一定的误差。所以一般我们会在STM32芯片外部接一个8MHz的标准晶振(HSE时钟),配置系统时钟就是使用这个外部的HSE时钟经过内部倍频之后作为系统运行的...
  • stm32f4系统时钟变慢
    答:stm32f4系统时钟变慢原因包括:1、外设多,不同的外设有不同的时钟要求。2、功耗原因,速度越快,功耗越大。3、系统复杂,抗电磁干扰能力弱。
  • stm32串口时钟不对
    答:中断配置不正确,电源管理不正确,引脚配置。1、中断配置不正确:如串口中断没有正确配置,会导致串口无法正常工作。2、电源管理不正确:在停止模式下,芯片的电源管理也会被关闭,唤醒后需要重新配置电源管理,如电源管理配置不正确,会导致串口无法正常工作。3、引脚配置:引脚配置模式等需要注意,否则会...
  • 3.已知STM32系统时钟频率为72 MHz,如何设置相关寄存器,实现10ms定 ...
    答:设置系统时钟:使用RCC寄存器设置PLL倍频系数,将系统时钟频率设置为72 MHz。选择合适的定时器:在STM32中有多个定时器可供选择,根据需要选取合适的定时器。假设在这里我们选用TIM2定时器。配置定时器:使用TIM2的相关寄存器配置定时器的时钟源、分频系数和计数周期等参数。可以将定时器的时钟源设置为内部...
  • stm32的系统时钟问题
    答:嗯!系统时钟有内部时钟和外部时钟!当我们需要使用外部时钟的时候才需要配置!一般不配置就直接使用内部时钟!
  • STM32时钟配置问题
    答:8位为100,也就是对系统时钟2分频,系统时钟最高72M,除2以后当然不超过36了;[2:0]是指从0位到第二位,即有三位,位0,位1,位2。[3:0] [1:0] 类似。51学的时候是用C还是用汇编?多看看汇编,多了解怎么对硬件进行操作的,那么从8位单片机到32位单片机不难。
  • stm32单片机的时钟有哪些,为什么采用多时钟系统?
    答:采用多时钟系统的原因主要有以下几点:1. 功耗优化:不同的外设和功能模块可能需要不同的工作频率。通过提供多个时钟源,STM32可以根据实际需求选择适当的时钟频率,从而优化功耗。例如,当某个外设不需要高速运行时,可以将其时钟频率降低,以减少功耗。2. 性能提升:某些功能模块,如ADC(模数转换器)或...
  • STM32程序为什么普遍使用HSE + PLL作为时钟?
    答:在STM32开发中,普遍采用HSE(高速外部时钟源)配合PLL(锁相环路)作为主时钟系统,这主要是为了充分利用芯片的高性能。STM32的典型工作频率为72MHz,这一频率能充分发挥其出色的处理能力。然而,现实中的挑战是72MHz晶振在制造过程中可能会遇到精度问题,高频率意味着对精度要求更高,加工难度和误差率...