历史上的今天
今天是:2024年12月24日(星期二)
2021年12月24日 | STM32F10X-时钟树详细介绍
2021-12-24 来源:eefocus
RCC是reset clock control的简称(即复位和时钟控制器),本文将详细介绍时钟树的构成,通过理解时钟树我们可以更加的了解STM32的所有时钟来源和他们之间的关系。
如下图,是STM32的时钟树,非常重要,我们将对每个时钟进行讲解,读者理解后时钟树看起来将会变得很简单。
建议保存下图,边阅读本文边对照时钟树,可以达到事半功倍的效果。

1.HSE高速外部时钟
HSE是高速外部时钟新号,可以由有源晶振和无源晶振提供,频率范围4-16MHZ。使用有源晶振,时钟从OSC_IN引脚进入,OSC_out引脚悬空;当使用无源晶振是,时钟信号由OSC_IN和OSC_OUT进入,且需要谐振电容。
当确定PLL时钟来源为HSE时,可以选择HES不分频或者2分频作为PLL时钟源。
2.PLL时钟源
PLL时钟源有两个,一个是HSE,另外一个是HSI/2。HSI是高速内部时钟信号,频率为8M,该信号源会随着温度和环境会有所漂移,一般不作为PLL的时钟来源。
3.PLL时钟PLLCLK
通过设置PLL倍频因子,可以对PLLSRC进行倍频。72M是ST官方推荐的稳定运行时钟,最高为128M。
4.系统时钟SYSCLK
系统时钟来源可以是HSI、PLLCLK、HSE。
5.AHB总线时钟HCLK
SYSCLK经过AHB预分频之后得到时钟叫APB总线时钟,即HCLK。片上的绝大部分外设的时钟都是经过HCLK分频得到。
6.APB1总线时钟HCLK1
APB1总线时钟PCLK1由HCLK经过低速APB预分频器得到的。HCLK1属于低速总线时钟,最高为36M,低速片上外设就挂载到这条总线上,比如USART2/3/4/5、SPI2/3,、I2C1/2。
7.APB2总线时钟HCLK2
APB2总线时钟HCLK2由HCLK经过高速APB2预分频器得到的。HCLK2属于高速的总线时钟,片上高速外设就挂载到这条总线上,比如全部的GPIO、USART1、SPI1。
8.其他时钟
USB时钟
USB时钟是由PLLCLK经过USB预分频器得到,USB最高时钟是48M。USB对时钟要求比较高,所以PLLCLK只能是HSE倍频得到,不能使用HSI倍频。
Cortex时钟
Cortex系统时钟是由HCLK 8分频得到的,Cortex系统时钟用来驱动内核的系统定时器SYSTick,SysTick一般用于操作系统的时钟节拍,也可以做普通的定时。
ADC时钟
ADC时钟由PCLK2经过ADC预分频器得到,ADC最高时钟是14M。
RTC时钟、独立看门狗时钟
RTC时钟由HSE/128分频得到,也可以由低速外部时钟LSE提供,频率为23.768KHZ,也可以由低速外部时钟HSI提供。
独立看门狗的时钟只能由LSI提供,频率为30-60KHZ,一般取40KHZ。
MCO时钟输出
MCO是microcontroller clockoutput的缩写,是微控制器时钟输出引脚,主要作用是对外提供时钟,相当于一个有源晶振。MCO的时钟来源可以是PLLCLK/2,HSI,HSE,SYSCLK。
可以通过监控MCO引脚的时钟输出来验证我们的系统时钟是否配置正确。
9.HSI使用
当HSE作为PLL时钟来源时候,如果HSE发生故障,不仅HSE不能使用,PLL也会关闭,这个时候系统会自动切换HSI作为系统时钟,此时SYSCLK=HSI=8M,这个时候如果没有开启CSS和CSS中断时候,系统只能在低速率运行,跟瘫痪没什么区别。
如果HSE故障时候,CSS中断里采取补救措施,使用HSI,把系统时钟设置为更高,最高是64M,频率够用了,但是与原来频率(比如72M)不一致,外设时钟也跟着改变,那么外设工作也会被打乱,这时候我们设置HSI时钟时候也跟着改变各个分频因子,使得外设时钟跟故障之前一样,但是毕竟不能一直使用HSI,所以HSE故障时应该采取报警措施。
史海拾趣
|
精确的信号调理和高分辨率的测量不再局限于工业或仪器仪表应用,便携式消费类电子设备的设计人员也需要减小系统噪声,这相当具有挑战性,因为电池供电设备中的信号电压很小,系统的精度取决于其本底噪声。为了从信号调理电路中获取最低的本底噪声和 ...… 查看全部问答> |
|
最近做嵌入式开发,我的magicARM2410的ADC驱动总算自己写出来,但是目前又遇到一个问题,那就是,ADC驱动和magicARM2410 linux试验箱的TOUCHSCREEN触屏驱动有冲突,我要使用我的ADC驱动,那就必须卸载试验箱linux已有的触屏驱动, 我想问下各位大 ...… 查看全部问答> |
|
大家好,最近在想一个问题: 我们通过键盘等物理工具,可以形成电流的通断/电压的高低; 然后由半导体的一些物理特性,将这些物理信号判决成逻辑的0或1 我想反过来,如何将逻辑的0或1转换成物理信号的? 比如说8个比特 1000 0001 表示将芯片的0 ...… 查看全部问答> |
|
双击目录,然后就出现如下情况了 Data Abort: Thread=83cfe400 Proc=821267c0 \'explorer.exe\' AKY=00000011 PC=03fb8cd8(coredll.dll+0x00048cd8) RA=03e81f04(commctrl.dll+0x00041f04) BVA=0a11ffff FSR=00000003 Prefetch Abort: Thread=83 ...… 查看全部问答> |
|
如图,怎么觉得heater resistor 不会工作呢。 R291为负温度系数热敏电阻,常温为22K,比较器LM311输出高电平,这样mos管闸断,heater没有电流流过。… 查看全部问答> |
|
课程设计刚做完,发个秒表的程序分享下。实验版是Altera公司的ep2c5q208c8,晶振为50Mhz。功能为复位,启停,用6为数码管显示。精确到1/100s。程序为:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_U ...… 查看全部问答> |
|
/*****************************************************************************\\ 文件名: main.c 描述;用于MSP430F149。 异步通讯。 版本:4.20.1 sun_seven \\********************************************** ...… 查看全部问答> |
|
我做一个CORDIC算法产生正弦波的程序,用Q2编写,但是modelsim能仿真出来正弦波波形,但是signaltap抓的波形是上下相反的,一直找不到原因,希望高手能帮帮忙,谢谢啦! 下面是我的程序: module NCO(clk,rst_n,ena,fre_chtr,pha_chtr,sin_out_r, ...… 查看全部问答> |




