跟51相比较STM32的时钟模块变得比较复杂起来这主要得益于STM强大的各种功能。对于不同的模块需要用到的时钟频率是不一样的。而较高的频率会造成更多的能量的浪费。以下是我在学习STM32过程中的总结。
首先我们要明白各个时钟模块的时钟来源。下面这张图是我调用了原子哥的参考手册里面的图。
首先我们来聊一下时钟的来源(图中标红了的5个数据),时钟源一共有5个。其中的PLLCLK(图中的5号时钟源)是从其他的时钟源转换过来的。下面我分别对这5个时钟源进行一下讲解。
(1)HSI图中的1号时钟源,是内部高速时钟。其时钟频率为8MHZ
(2)HSE为高速外部时钟,可以接4-16MHZ的晶振(芯片PD0和PD1之间所接的晶振)。
(3)LSI低速内部时钟,40KHZ 是独立的看门狗唯一的时钟源,同时也可以作为RTC的时钟源
(4)LSE低速外部时钟源,外接32.768KHZ的晶振(PC14和PC15引脚之间),作为RTC的主要时钟源
(5)PLL 时钟来源为HSI/2、HSE、HSE/2
了解了时钟的来源,那么接下来我们就来了解一下这些时钟是如何跟外设相连接起来的。
(1)通过 MCO口(PA8)输出 是用来选择以下时钟(PLL二分频、HSI、HSE、系统时钟)输出用于供给其他外设使用的
(2)作为 RTC时钟源 (来源为LSI、LSE、HSE/128)
(3)作为 USB时钟 通过PLL时钟源经过1或者1.5倍分频即可得到(USB口所需时钟为48MHZ)
(4)SYSCLK时钟来源为PLL、HSI、HSE,最大频率为72MHZ 可以超频。
这里的SYSCLK所连接的外设很多下面我仔一一做详解
①经过8分频送给cortex的系统时钟即systic
②直接送给cortex作为空闲运行时钟
③送给APB1分频器,APB1输出一路供APB1外设使用(PCLK1最大频率为36MHZ),另一路供给定时器(tim2.3.4)倍频使用
④送给APB2分频器,APB2输出一路供APB2外设使用(PCLK2,最大频率为72MHZ)另一路送给定时器tim1使用
对APB1和APB2所连接的外设这里做进一步讲解 APB1上面接的是低速外设,APB2上面接的是高速外设。具体见下
①APB1:CAN,USB,I²C1,I²C2,UART2,UART3
②UART1,SPI1,TIMER1,ADC1,ADC2,所有普通IO口,第二功能IO口等。
----------------------------------------------------------------------------------------------------------------------------------------------------
以上是我根据原子哥的资料做的总结
上一篇:STM32F103RCT6 LED灯程序设计
下一篇:STM32F051C8T6控制LED
推荐阅读最新更新时间:2024-03-16 16:10