您的位置:首页 > 其它

STM32F4再探-1.时钟系统

2016-12-05 19:18 113 查看
在算已经入门了STM32之后(其实也不算入门了,只是会使用STM32的各种外设,会GPIO,会复用,能使用SPI,串口,会输出PWM,会定时器,刚刚实现一个无线通信控制步进电机按照一定流程运动,下一步打算移植UCOSIII到板子中),在这之前觉着好像仅仅只是会使用STM32,能看得懂例程,但是对于一些原理性的东西好像很模糊,觉着要重新学习一遍STM32F4,然后搞明白以前很模糊的一些概念和原理。

首先要搞清楚的是时钟系统。上图



STM32的外设很多,并不是所有的外设都需要像系统时钟那么高的频率,RTC+看门狗只需要几十K即可。频率越高,功耗越大,抗电磁干扰能力越弱,所以在STM32中不像51只有一个时钟源。

STM32F4中有5个最重要的时钟源:

HSI-高速内部时钟(RC振荡器产生,16M,可作为系统时钟)

HSE-高速外部时钟(外部晶振,一般用8M晶振)

LSI-低速内部时钟(RC振荡器产生,32kHz左右,供看门狗和自动唤醒单元使用)

LSE-低速外部时钟(32.768kHz外部晶振,主要为RTC时钟源)

PLL-锁相环倍频输出(分为主PLL和专用PLL)

PLL的来源其实是HSI或者HSE。

主PLL(PLL):具有两个不同的输出时钟(PLLP,PLLQ)。

PLLP用于生成高速系统时钟(SYSCLK,最高168MHz)

PLLQ用于成成USB OTG FS的时钟(48MHz),

专用PLL(PLLI2S):在I2S接口实现高品质音频。

PLLP->SYSCLK 计算系统频率的方法:

(eg. 外部晶振8M 分频系数M=8 倍频系数N=336 分频系数P=2)

则: PLLP=8MHz * N / (M * P) = 168MHz

系统时钟为PTP(以太网时钟),AHB,APB1,APB2作为时钟源。

注意:PTP使用系统时钟频率,AHB,APB1,APB2都是经过分频之后的时钟。

AHB最高168MHz APB2最高84MHz APB1最高42MHz

最后总结一下SystemInit()函数中设置的系统时钟的大小:

SYSCLK(系统时钟):168MHz

AHB(HCLK=SYSCLK):168MHz

APB1(PCLK1=SYSCLK/4):42MHz

APB2(PCLK2=SYSCLK/2):84MHz

PLL主时钟:168MHz
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: