文章目录
- 时钟与时钟树
- stm32时钟树
- 可以手动把系统时钟72mhz改成其他的吗?
- ST公司给的外围设备配置文件 的 默认配置说明
- 定时器
- 什么是定时器
- 定时器的类型
时钟与时钟树
频率:如72Mhz即为每秒72M个脉冲
-
时钟的源头
晶振 -
时钟树的分支
分频器:分频器是一种将输入时钟信号的频率降低到其整数倍的电路。
倍频器:倍频器则是将输入时钟信号的频率提高到其整数倍的电路。
参考CSDN文章_时钟系统
他们可以通过改变频率实现不同频率的分支。
stm32时钟树
《STM32F103C8T6从入门到精通》SystemInit函数详细讲解
St公司的配置程序:江科大
- 8Mhz HSI做系统时钟
- 再打开HSE取8Mhz 再通过图中黄色路线到锁相环(PLL)倍频9倍,待锁相环输出稳定后,(红色区域)切换锁相环输出为系统时钟 但是,如果外部晶振HSE出现问题,就不会切换,而是继续使用系统内部时钟HSI.
- 在参考手册中的RCC的CR寄存器中的HSION位的部分 找到了对上面过程的说明
stm32时钟树_站内跳转
时钟树动画简介
可以手动把系统时钟72mhz改成其他的吗?
可以通过更改这里的宏来实现。
具体代码梳理
ST公司给的外围设备配置文件 的 默认配置说明
《STM32F103C8T6从入门到精通》SystemInit函数详细讲解 该函数配置了系统时钟等
在system_stm32f10x.c文件中提到
- HSI 作为默认时钟源
HSI (High Speed Internal):内部高速时钟,频率为 8 MHz。每次设备复位后,HSI 自动作为系统时钟源。
SystemInit() 函数:在启动文件 startup_stm32f10x_xx.s 中定义的函数,用于配置系统时钟。该函数在跳转到主程序前被调用。 - 时钟源故障处理
如果用户选择的系统时钟源未能成功启动(例如,外部时钟源未正常工作),SystemInit() 函数将不做任何处理,系统将继续使用 HSI 作为时钟源。
用户可以在 SetSysClock() 函数中添加代码来处理这种情况,例如重新配置时钟源或进行错误处理。 - HSE 晶振配置
HSE (High Speed External):外部高速时钟,通常由外部晶振提供。
默认情况下,HSE 晶振的频率设置为 8 MHz 或 25 MHz,具体取决于所使用的 STM32F10x 产品。
HSE_VALUE 定义在 stm32f10x.h 文件中,用于指定 HSE 的频率。
如果使用 HSE 作为系统时钟源(直接或通过 PLL),并且使用了不同的晶振频率,需要调整 HSE_VALUE 以匹配实际使用的晶振频率。
定时器
什么是定时器
定时器就是计数器
定时器就是计数器
定时器就是计数器
动画演示_B站
PS: 预分频器和计数器的长度都是16bit ,216 = 65536
-
预分频器(Prescaler)·:预分频器的值规定在0 ~ n-1(n是输入时钟频率的数值)
它像是计数器的一个助手,规定每隔几个脉冲向计数器报告一次,让计数器加1- 当预分频的值为零时,每一个脉冲计数器加一次;设定值为1时,每隔两个脉冲,计数器加1。
- 预分频器的作用:可以增加定时器的定时上限:
- 当预分频器设置为0时,一个脉冲就记一次,因为计数器最多定65536下,对应65536 * (1/72M) ≈ 0.00091秒。
- 而当预分频器设置为65535时,每72M个脉冲记一次,因为计数器还是最多定65536下,对应时间为,65536 * 65536 * (1/72M) ≈ 59.65 秒 (计数器的值 乘 预分频器处理的记一次对应的脉冲数 再乘 一个脉冲对应的时间)
- 可见,预分配器正是通过自己额外处理时钟脉冲数来提高总时间的
-
计数器(Counter):
- 基本定时器只有向上计数模式。(从零开始加)
- 通用定时器与高级定时器有向上计数、向下计数(从设定值开始减)、中央计数模式。
-
自动重装载寄存器(Auto Reload Register):在计数器到达该寄存器设定值时清零计数器,并同时(如果配置了)
可触发中断。
定时器的类型
类型 | 编号 | 总线 | 功能 |
---|---|---|---|
高级定时器 | TIM1、TIM8 | APB2 | 拥有通用定时器全部功能,并额外具有重复计数器、死区生成、互补输出、刹车输入等功能 |
通用定时器 | TIM2、TIM3、TIM4、TIM5 | APB1 | 拥有基本定时器全部功能,并额外具有内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等功能 |
基本定时器 | TIM6、TIM7 | APB1 | 拥有定时中断、主模式触发DAC的功能 如何理解主模式触发 |
STM32C8T6 只有TIM1,TIM2,TIM3,TIM4