1:STM32有5个时钟源:HSI,HSE,LSI,LSE,PLL
HSI是高速内部时钟,RC振荡器、频率为16MHZ,精度不高。可以直接作为系统时钟或者用作PLL时钟输入
HSE是高速外部时钟,可接石英/陶瓷谐振器,或接外部时钟源,频率范围为4M~26M.
LSI是低速内部时钟,RC振荡器,频率为32KHZ,提供低功耗时钟。主要供独立看门狗和自动唤醒单元使用。
LSE是低速外部时钟,接频率为32.768KHZ的石英石钟。RTC
PLL为锁相环倍频输出。STM32F4有两个PLL。
主PLL,(PLL)由HSE或者HSI提供时钟信号,并具有两个不同的输出时钟
第一个输出PLLP用于生成高速的系统时钟(最高168MHZ)
第二个输出PLLQ用于生成USB OTG FS的时钟(48MHZ),随机数发生器的时钟和SDIO时钟
专用PLL(PLLI2S)用于生成精确时钟,从而在I2S接口实现高品质音频性能。
2:系统时钟SYSCLK可来源于三个时钟源:
HSI振荡器时钟
HSE振荡器时钟
PLL时钟
3:STM32F4时钟信号输出MC01(PA8)和MCO2(PC9)
MCO1:可以配置预分频器(1~5)向MCO1引脚PA8输出4个不同的时钟源
HIS
LSE
HSE
PLL
MCO2:可以配置预分频器(1~5)向MCO2引脚PC9输出4个不同的时钟源:
HSE
PLL
SYSCLK
PLLI2S
注:MCO最大输出时钟不超过100MHZ,且在使用任何一个外设之前,必须首先使能其相应的时钟
4:系统时钟初始化函数 SystemInit();
在使用标准库函数的时候,在系统启动之后会自动调用:
; Reset handler
Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT SystemInit
IMPORT __main
LDR R0, =SystemInit
BLX R0
LDR R0, =__main
BX R0
ENDP
若要使用外部时钟源HSE,要配置外部晶振频率在
#if !defined (HSE_VALUE)
#define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
初始化之前首先通过宏定义定义下面变量来定义系统时钟频率:
/************************* PLL Parameters *************************************/
#if defined (STM32F40_41xxx) || defined (STM32F427_437xx) || defined (STM32F429_439xx) || defined (STM32F401xx)
/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */
#define PLL_M 8
#else /* STM32F411xE */
#if defined (USE_HSE_BYPASS)
#define PLL_M 8
#else /* STM32F411xE */
#define PLL_M 16
#endif /* USE_HSE_BYPASS */
#endif /* STM32F40_41xxx || STM32F427_437xx || STM32F429_439xx || STM32F401xx */
/* USB OTG FS, SDIO and RNG Clock = PLL_VCO / PLLQ */
#define PLL_Q 7
#if defined (STM32F40_41xxx)
#define PLL_N 336
/* SYSCLK = PLL_VCO / PLL_P */
#define PLL_P 2
#endif /* STM32F40_41xxx */
在MDK钟已经宏定义了STM32F40_41xxx
SO,整理一下,得到如下定义:
#define PLL_M 8
#define PLL_Q 7
#define PLL_N 336
#define PLL_P 2
/* PLL=8*N/(M*P)=8*336/(8*2)=168M */
执行上面的操作后:
SYSCLK(系统时钟) =168MHz
AHB总线时钟(HCLK=SYSCLK) =168MHz
APB1总线时钟(PCLK1=SYSCLK/4) =42MHz
APB2总线时钟(PCLK2=SYSCLK/2) =84MHz
PLL主时钟 =168MHz
可以通过变量SystemCoreClock获取系统变量。
#if defined (STM32F40_41xxx)
uint32_t SystemCoreClock = 168000000;
#endif /* STM32F40_41xxx */
上一篇:STM32F4GPIO
下一篇:STM32--DMA
推荐阅读最新更新时间:2024-11-13 21:41
设计资源 培训 开发板 精华推荐
- LTC1408、SAR ADC 具有速度快、低功耗、小封装尺寸和真正同步采样的特点
- DC513A,用于 LTC2846CG/LTC2845CG 软件可选多协议收发器的演示板
- AM6TW-4818SZ 18V 6瓦单输出DC-DC转换器的典型应用
- DS51453A,用于直流电机的PIC18 MCU开发系统
- AKD4396-A,用于 AK4396 192kHz 采样 24 位 Delta Sigma DAC 的评估板
- 用于仪表的 14 位 2 通道 DAC
- ADP2119 2A/1.25A、1.2 MHz、同步降压直流至直流稳压器的典型应用
- LTC6262HTS8 SAR ADC 驱动器、运算放大器的典型应用
- 使用 Analog Devices 的 LT1109CN8 的参考设计
- 用于压力传感器的 ±5V 仪表放大器
- 【EE团】ST最新STM32F429i高性能开发板重磅登场
- EEworld独家原创视频:大话TI CC2650,邀你来看!
- 今日竞拍:TI SimpleLink Wifi CC3220S
- 有奖直播|罗彻斯特电子半导体全周期解决方案 助您应对供应链中断和元器件停产的挑战
- 证明自己,VICOR技术问题测试问卷,等您来挑战!好礼等您拿!
- ADI 生命体征监测技术:对人体实施状态监控,答题有好礼
- 报名有礼| Arm Tech Symposia 年度技术大会报名开启!
- Mouser 新用户大礼包:你购物,我5折返E金币!
- 有奖直播|TI DLP® 技术在AR HUD及车内显示应用的展望
- 温故而知新——开关电源经典课程学习