时钟树的讲解

发布者:DelightWish123最新更新时间:2022-01-20 来源: eefocus关键字:时钟树  STM32  振荡器 手机看文章 扫描二维码
随时随地手机看文章

系统时钟的来源:1 HSE振荡器时钟 、 2 HSI 振荡器时钟 、3 PLL振荡器时钟 。其中PLL是常用的系统时钟来源。


时钟树

在这里插入图片描述
上图中黄色的实线是系统时钟配置的流程。红色框框起来的是寄存器RCC的响应控制位。


1:8M的初始时钟在经过PPLXTPRE选择的倍频因子/1得到的频率为8M /1 = 8M大小不变。
2:这个时候来到PPLSRC该位控制的是选择HSI RC还是 HSE OSE作为时钟源,通过控制时钟配置寄存器(RCC_CFGR)设置PLLSRC的值选择 HSE OSE作为时钟源。频率大小还是8M
3:下一步就是PLLMUL控制位选择的倍频因子为x9那么得到的频率大小为 8M x9 = 72M。
4:接下来是SW控制位。它的作用是选择那个时钟输入到SYSCLK中去。这里选择PLLCLK整个时候时钟频率的大小还是72M
5:接下来就是AHB时钟预分频器可选倍频因子为/1 /2 /3 /4 /5 ... /512在这里倍频因子还是选择/1所以时钟还72M。
6:接下来便是APB1和APB2这两个挂载在AHB时钟线上的时钟总线。可以根据需要选择。
NOTE:特别注意APB1的最大时钟频率不能超过36。当从AHB出来的时钟频率为72的时候,倍频因子N只能是72 /N =< 36并且N只能是/1,/2,/4,/6,/8,/16其中的一个。同样APB2的最大时钟频率是72M。假设从AHB出来的频率大小为 AHB-N,倍频因子为N 那么有公式AHB-N /N =< 72 并且N只能是/1,/2,/4,/6,/8,/16其中的一个


关键字:时钟树  STM32  振荡器 引用地址:时钟树的讲解

上一篇:DMA传输实验
下一篇:11-固件库点亮LED

推荐阅读最新更新时间:2024-11-06 12:14

STM32实现电机的正反转
2019年7月22日 今天是做小车过程中的第二天,今天写一下单纯的实现电机的正反转。(但是还是不会实现PWM调速)代码如下: /***********************************************/ .H 代码 #ifndef __MOTOR1_H #define __MOTOR1_H #include “stm32f10x.h” //#include “stm32f10x_gpio.h” #define High 1 //宏定义 高为1 #define Low 0 //宏定义 低为0 #define IN1(a) if (a) GPIO_SetBits(GPIOA,GPIO_Pin_4); //如果真
[单片机]
STM32库函数的使用过程中晶振参数与实际不符的问题
这段时间自己开了一块STM32F4的板子,调试过程中发现,外部电路焊接的晶振为8MHz,但在调试过程中检测得的时钟确是25MHz,令人恼火。 本着遇到问题解决问题的思路,开始思考问题出在哪里。 首先,将单片机的系统时钟配置为内部的16MHz晶振,单片机工作正常,说明电路板是没问题的。 之后,将单片机的系统时钟配置成外部8MHz晶振,发现通过RCC_GetClocksFreq函数获取的时钟值确是25MHz,由此观之问题可能出在两个方面: 1:晶振本身有问题; 2:RCC_GetClocksFreq函数获取时钟值问题。 通过用调换三个晶振,结果一样,初步判定晶振是没有问题的。那么问题就是出在RCC_GetClocksFreq函数上了,
[单片机]
STM32 SysTick定时器常见问题及延时函数的实现
Q:什么是SYSTick定时器? SysTick 是一个24 位的倒计数定时器,当计到0 时,将从RELOAD 寄存器中自动重装载定时初值。只要不把它在SysTick 控制及状态寄存器中的使能位清除,就永不停息。 Q:为什么要设置SysTick定时器? (1)产生操作系统的时钟节拍 SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常(异常号:15)。在以前,大多操作系统需要一个硬件定时器来产生操作系统需要的滴答中断,作为整个系统的时基。因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统“心跳”的节律。 (2)便于不同处理器之间程序移植。 Cortex‐M3处理器内
[单片机]
<font color='red'>STM32</font> SysTick定时器常见问题及延时函数的实现
简析STM32 I2C通讯死锁问题
I2C接口是一种使用非常普遍的MCU与外部设备的接口方式,在STM32中也集成了I2C接口,我们也常常使用它来与外围的传感器等设备通讯。 最近在我们使用STM32F1VET6读取压力和温湿度传感器数据时,就是使用I2C接口来实现通讯的。但在使用I2C和STM32F1的标准库读取数据时出现了死机的现象。其现象是这样的,程序可以顺利的运行,但I2C没有数据返回。用示波器查看波形时,发现SCL的电平时钟为高,而SDA的电平时钟为低。如果拔掉对应的设备,SCL的波形则恢复正常。接上设备恢复正常,但运行一会现象依旧。 一开始以为是连接的设备有问题,于是换了一台设备,发现依旧如此。难道真的是I2C出现了死锁现象。那我们看看究竟怎么样的
[单片机]
STM32】通用定时器的PWM输出(实例:PWM输出)
STM32F1xx官方资料: 《STM32中文参考手册V10》-第14章 通用定时器 通用定时器PWM概述 STM32定时器输出通道引脚 道引脚 这里以TIM3为例来讲解。STM32的通用定时器分为TIM2、TIM3、TIM4、TIM5,而每个定时器都有独立的4个通道可以用来作为:输入捕获、输出比较、PWM输出、单脉冲模式输出等。 STM32的定时器除了TIM6和TIM7(基本定时器)之外,其他的定时器都可以产生PWM输出。其中,高级定时器TIM1、TIM8可以同时产生7路PWM输出,而通用定时器可以同时产生4路PWM输出,这样STM32最多可以同时产生30路PWM输出! 从图中的内容可以看出,TIM3的
[单片机]
【<font color='red'>STM32</font>】通用定时器的PWM输出(实例:PWM输出)
STM32的can2和CAN1竟然有关联?!!!
调试STM32F107的CAN2竟然无法接收。通过与另一个代码对比,终于发现想用CAN2,则必须把CAN1的RCC也配置上,就可以接收了。 上网查了下,21IC给解释http://bbs.21ic.com/icview-542674-1-1.html。手册也懒得看了,总之,CAN2和CAN1是有关联的。对于STM32F407可能也是如此。 如果设置两遍也不行。也是CAN2不能接收。 比如这样设置两遍: RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN2, ENABLE);
[单片机]
关于STM32的AD基准问题
STM32的64pin封装的AD不能加外部基准,也没有内部基准 STM32有一个内部的参考电压,接到了内部的ADCx_IN17通道,它用于提供一个参考的数值但不是基准。根据数据手册,在温度为-40至+105摄氏度范围内,这个参考电压为:最小值=1.16V、典型值=1.20V、最大值=1.24V。 测量这个参考电压的数值可以作为你的实际信号测量的参照。 关于AD测量的准确性问题,请务必把电源滤波做好,你可以参考ST的评估板上的电源部分,这个文档中有电路图:http://www.st.com/stonline/products/literature/um/13472.pdf STM32的ADC供电是VDDA,参考电压是Vref+和V
[单片机]
STM32串口第一个字节发不出来解决方法
问题:在STM32中配置好串口之后,发送数据,第一个数据是发不出去的,这时由于Cortex-M3本身的问题 解决办法: 在 USART_ITConfig(DEBUG_USART, USART_IT_RXNE, ENABLE); USART_Cmd(DEBUG_USART, ENABLE); 后面加上下面这一句即可 USART_ClearFlag(DEBUG_USART, USART_FLAG_TC); 如下: 点击(此处)折叠或打开 USART_ITConfig(DEBUG_USART, USART_IT_RXNE, ENABLE);//???????????? USART_Cmd(DEBUG_USART, ENABLE
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved