完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
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 handlerReset_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 */ |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1780 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1621 浏览 1 评论
1081 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
728 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1679 浏览 2 评论
1938浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
731浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
570浏览 3评论
596浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
556浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 00:43 , Processed in 0.893718 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号