stm32时钟初探

stm32时钟初探

STM32中,有五个时钟源,为HSIHSELSILSEPLL

HSI是高速内部时钟,RC振荡器,频率为8MHz

HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz

LSI是低速内部时钟,RC振荡器,频率为40kHz

LSE是低速外部时钟,接频率为32.768kHz的石英晶体。

PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz

 

AHB=Advanced High Performance Bus,译作高级高性能总线。如同USBUniversal Serial Bus)一样,也是一种总线接口。

AHB主要用于高性能模块(CPUDMADSP)之间的连接,作为SoC的片上系统总线

APBthe Advanced Peripheral Bus

是本地二级总线(local secondary bus ),通过桥和AHB/ASB相连。它主要是为了满足不需要高性能流水线接口或不需要高带宽接口的设备的互连。

 以下为说明

https://images2015.cnblogs.com/blog/1104670/201707/1104670-20170704191940347-1992274064.jpg

 

 

 

 

 

时钟有了大致了解,接下来看看代码上要怎么控制这些时钟

reset and clock control   RCC

比如要用定时器3,就要先使能APB1时钟

RCC->APB1ENR|=1<<1; //TIM3时钟使能    

我们来仔细研究下这段代码,RCC可以在stm32f10x.h中找到相关定义https://images2015.cnblogs.com/blog/1104670/201707/1104670-20170705000253097-362148638.png

这里具体地址是怎么算过来的比较麻烦,是一层一层叠加起来的,我在手册里也没找到直接的地址,这个就不细究了,哪怕用寄存器写stm32的代码也是包含stm32f10x.h

https://images2015.cnblogs.com/blog/1104670/201707/1104670-20170705001230159-1294969796.png这些就是RCC寄存器的定义,而AHBENR可以在手册中找到描述

https://images2015.cnblogs.com/blog/1104670/201707/1104670-20170705001634081-1054139781.png

 

 以上就是使能相应外设的示例

 

猜你喜欢

转载自blog.csdn.net/sinat_30457013/article/details/89383482