历史上的今天
今天是:2024年10月09日(星期三)
2021年10月09日 | STM32 F103 时钟树详解
2021-10-09 来源:eefocus
刚入STM32 用了也有一段时间了,先做了中断,CAN,SPI。都是跟着网上的例子直接粘贴外设的初始化代码,看的大概能懂,但是时钟一直迷迷糊糊,不清不楚。
STM32为了实现低功耗,而设计的功能完善构成复杂的时钟系统,称之时钟树。使外设功能的时钟可自配置。因为STM32外设众多,而不同的项目用到的外设参差不齐,所以可控的时钟可以实现降低产品功耗。
所有的外设在使用之前都必须设置时钟信号,才可以正常工作。以STM32F103C8T6时钟树为例,如下图所示:
图7和图8道理一样的,大家觉得那个容易理解就看那个图

图8

STM32的四个时钟源
外部时钟
<1>高速外部时钟(HSE):外部时钟源,晶振频率可取范围为4~16MHz,我们一般采用8MHz的晶振。
<2>低速外部时钟(LSE):外部时钟源,主要提供给实时时钟模块,所以一般采用32.768KHz。
内部时钟
<3>高速内部时钟(HSI):由内部RC振荡器产生,频率为8MHz,但不稳定。
<4>低速内部时钟(LSI):由内部RC振荡器产生,也主要提供给实时时钟模块,频率大约为40KHz。
以最常用的高速外部时钟(HSE)为例
<1>左边红色框框1 两个外部引脚接8M晶振的两端。
<2>8M时钟遇到第一个分频器PLLXTPRE,也就是HSE后面的第一个节点,我们不分频。
<3>时钟来到PLL Source Mux,可选输入的时钟信号有外部高速时钟(HSE)和内部高速时钟(HSI),选择HSE。
<4>接着信号走到锁相环PLL,具有倍频作用,我们选择倍频因子(PLL Mul),可取值2,3,...14,15,16,我们选择9倍频。现在时钟信号为8*9=72M。
<5>来到系统时钟源输入选择,可选时钟有HSE(8M)、HSI(8M)和经过倍频的PLL CLK(72M),选择PLL CLK作为系统时钟,此时系统时钟为72M。
<6>系统时钟(SYSCLK)来到AHB预分频器,可选分频系数:1,2,4,8,16,32,64,128,256。选择不分频,直接来到挂载低速外设的(APB1)PCLK1和挂载高速外设的(APB2)PCLK2。
<7>PCLK1低速外设时钟的最大频率为36M,所以最低进行2分频。PCLK2高速外设时钟的最大频率是72M,可选择不分频。
选择使用HSE也是因为外部时钟更稳定精准,经过倍频给STYCLK提供最大的时钟频率,发挥CPU的最优性能。了解了时钟树,在使用各个外设的时候就明白时钟信号的来源了。记得初始化外设一定要使能相应的时钟。
史海拾趣
|
中星九号广播电视直播卫星点火发射| “中星九号”广播电视直播卫星(腾讯科技配图) 2008年6月9日20时15分,“中星九号”广播电视直播卫星点火发射。 中新网西昌六月九日电(唐振宇 齐彬)北京时间六月九日晚八时十五分,中国在西昌用“长征三号 ...… 查看全部问答> |
|
郁闷的是我只能做到双向9600bps,单向115200bps,人家8位单片机都能做到双向56000bps,受打击了,我再优化算法。。。。 2011.1.8总结汇报,这个模块已经完成了很久了,当时主要问题不是8962或者算法的问题,而是上位机测试 ...… 查看全部问答> |
|
printf 和 RETAILMSG 打印出来的消息不一致? wince6.0 下win32 api 写的代码。 char inFilename[128]; memset(inFilename, 0x00, sizeof(inFilename)); wcscpy(inFilename,_T(\"\\\\Temp\\\\test_420_1599_1198.jpg\")); DNW串口打印消息: RETAILMSG(1,(TEXT(\"[RETAILMSG] inFilename : ...… 查看全部问答> |
|
为什么串口得到的发动机转速是 字节乘以256的权?为什么是256的权呢? 看不懂 串口啊 老大 帮帮我啊 怎么个算小数点的位置啊 申明情况下要转为二进制要转为ASC2 申明情况下用16进制处理呢?????555… 查看全部问答> |
|
我们的程序需要时钟保持着对SATA硬盘的检测,当硬盘被拔掉或者插上时,都应该要有提示信息。那么在Linux下面,我需要去读取、检测哪儿才能获取该信息呢?如果有人对USB的热插拔也比较了解的,欢迎过来帮我扫盲!(我大致看了驱动层,整个SATA的中断 ...… 查看全部问答> |
|
在ADS的“ARM Link”中设置 “-info totals -info unused -entry 0x40000000 -mangled -map -symbols -scatter D:\\work-wincetest\\uC-GUI\\ucosforphilips\\scatter.scf -info veneers -info sizes -xref -callgraph” 生成了EXET_E ...… 查看全部问答> |
|
小弟最近研究vxworks时遇到一个问题,请大侠们多指教! 我的板子把ip地址设置成192.168.1.135,子网掩码设置为255.255.0.0,主机ip为192.168.1.45,子网掩码是255.255.0.0,我从板子上去ping主机,出现问题,ping不通,而相同情况下板子跑linux系统 ...… 查看全部问答> |




