一、STM32 有5个时钟源:HSI、HSE、LSI、LSE、PLL。
①HSI振荡器(RC振荡器)时钟是高速内部时钟,一般很少使用,因为精度没有外部高速时钟(晶振)那么高
②HSE是高速外部时钟接石英/陶瓷谐振器,或接外部时钟源,频率范围为4MHz~26MHz,M4开发板是8M
③LSI是低速内部时钟,RC振荡器,频率为32kHz提供低功耗时钟。主要供独立看门狗和自动唤醒单元使用。
④LSE是低速外部时钟,接频率为32.768kHz的石英晶体。用于驱动 RTC 时钟 (RTCCLK)
⑤PLL为锁相环倍频输出(倍频时钟)。STM32F4有两个PLL:
1、主PLL(PLL)由HSE或者HSI提供时钟信号,并具有两个不同的输出时钟。
第一个输出PLLP用于生成高速的系统时钟(最高168MHz)
第二个输出PLLQ用于生成USBOTG FS的时钟(48MHz),随机数发生器的时钟和SDIO时钟。
2、专用PLL(PLLI2S)用于生成精确时钟,从而在I2S接口实现高品质音频性能。
------------------------------------------------------------------------------------------------------------------------------------------------------
二、系统时钟SYSCLK可来源于三个时钟源:
①、HSI振荡器时钟
②、HSE振荡器时钟
③、PLL时钟
------------------------------------------------------------------------------------------------------------------------------------------------------
三、时钟树
------------------------------------------------------------------------------------------------------------------------------------------------------
四、开发板与系统时钟频率不匹配,如何修改?
1.查看汇编文件 startup_stm32f40_41xxx.s的第177行
Reset_Handler PROC // 复位中断执行
EXPORT Reset_Handler [WEAK] // 复位中断执行
IMPORT SystemInit // 系统时钟初始化的入口
IMPORT __main
LDR R0, =SystemInit // 系统时钟初始化
BLX R0
LDR R0, =__main // 启动main
BX R0
ENDP
2.查看system_stm32f4xx.c的第252行开始
PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N
PLL_VCO = (8000000 / 8) * 336
计算公式:SYSCLK = PLL_VCO / PLL_P = 336*1000000 / 2 == 168000000 == 168000KHz == 168MHz
------------------------------------------------------------------------------------------------------------------------------------------------------
修改:system_stm32f4xx.c第254行
#define PLL_M 25
修改为:
#define PLL_M 8
修改 stm32f4xx.h第127行
#if !defined (HSE_VALUE)
#define HSE_VALUE ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */
修改为:
#if !defined (HSE_VALUE)
#define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External oscillator in Hz *
(如遇到无法修改:权限问题:)点击名字那里能看到路径,找到.h修改权限
----------------------------------------------------------------------------------------------------------------------------------
根据文档了解我们的开发板的总线时钟频率:
系统时钟频率:标准频率为168MHz
AHB时钟频率:168MHz
APB1时钟频率:42MHz
APB2时钟频率:84MHz
超频:提高cpu运行的时钟频率。
调节PLL_N为432;
降频:降低CPU运行的时钟频率。
调节PLL_N为168;
上一篇:STM32的Systick滴答定时器及延时函数编写
下一篇:STM32Cube的串口配置与使用
推荐阅读最新更新时间:2024-03-16 16:22