目录
STM时钟概述
时钟系统是由振荡器(信号源)、唤醒定时器、分频器等组成电路
常用的信号源由晶体振荡器和RC振荡器
CPU内核与外设所需要工作频率不同 因此需要倍频器和分频器
振荡器概念
振荡器是用来产生重复电子讯号的电子元件。其构成的电路叫振荡电路,能将直流电转换为具有一定频率交流信号输出的电子电路或装置。
振荡器主要分为RC(电阻电容)、LC(电感电容)振荡器和晶体振荡器(石英)
RC振荡器 精度不高 易受环境温度等影响 优点成本低
晶体振荡器 精度高 稳定 通常需要外界两个 15~33pf 的起振电容
像我们用的STM32F103VET6 (有外部晶振和内部的RC振荡器)
STM32时钟源
HSI:高速内部时钟,RC振荡器,频率为8MHZ;【在配置cubemx的时钟树的时候通常不使用该时钟 因为会该时钟会根据温度和环境的情况频率会漂浮不定】
HSE:高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz
LSI:低速内部时钟,RC振荡器,40kHz 独立看门狗的时钟源、也可作为RTC时钟源
LSE:低速外部时钟,接32.768的石英晶体,这个主要作为RTC时钟源(2^15=32768)
(RTC是实时时钟源 为系统提供一个时间的基准 可以在掉电的情况下 启用备用的电池进行工作 尽管系统关机的情况下 时钟还是在计时状态)
【在配置cubemx的时钟树的时候不使用该时钟 LSE是给RTC和IWDG提供时钟频率 因为一般不使用 所以可以不用开】
STM32时钟树
梯形表示选择器
通过时钟树,可以看到有很多的分频因子、预分配因子
复位和时钟控制RCC
【此处只提到时钟部分】
设置系统时钟SYSCLK、设置AHB分频因子(决定HCLK等于多少)、设置APB2分频因子(决定PCLK2等于多少)、设置APB1分频因子(决定PCLK1等于多少)、设置各个外设的分频因子;控制AHB、APB2和APB1这三条总线时钟的开启、控制每个外设的时钟的开启。对于SYSCLK、HCLK、PCLK2、PCLK1这四个时钟的配置一般是:PCLK2 = HCLK = SYSCLK=PLLCLK= 72M,PCLK1=HCLK/2 = 36M。这个时钟配置也是库函数的标准配置,我们用的最多的就是这个。
STM32F103xx定时器
大容量的STM32F103xx增强型系列产品包含最多2个高级控制定时器、4个普通定时器和2个基本定时器,以及2个看门狗定时器和1个系统嘀嗒定时器。
对于stm32f103xx
APB1操作速度限于36MHz,APB2操作于全速(最高72MHz)。
高级控制定时器(TIM1和TIM8)
两个高级控制定时器(TIM1和TIM8)可以被看成是分配到6个通道的三相PWM发生器,它具有带死区 插入的互补PWM输出,还可以被当成完整的通用定时器。四个独立的通道可以用于:
● 输入捕获
● 输出比较
● 产生PWM(边缘或中心对齐模式)
● 单脉冲输出
配置为16位标准定时器时,它与TIMx定时器具有相同的功能。配置为16位PWM发生器时,它具有全调制能力(0~100%)。
在调试模式下,计数器可以被冻结,同时PWM输出被禁止,从而切断由这些输出所控制的开关。
很多功能都与标准的TIM定时器相同,内部结构也相同,因此高级控制定时器可以通过定时器链接功能与TIM定时器协同操作,提供同步或事件链接功能。位于高速APB2总线上(APB2)【F1 72M】
通用定时器(TIM2-5)
STM32F103xC、STM32F103xD和STM32F103xE增强型系列产品中,内置了多达4个可同步运行的标准定时器(TIM2、TIM3、TIM4和TIM5)。每个定时器都有一个16位的自动加载递加/递减计数器、
一个16位的预分频器和4个独立的通道,每个通道都可用于输入捕获、输出比较、PWM和单脉冲模式输出,在最大的封装配置中可提供最多16个输入捕获、输出比较或PWM通道。
它们还能通过定时器链接功能与高级控制定时器共同工作,提供同步或事件链接功能。在调试模式下,计数器可以被冻结。任一标准定时器都能用于产生PWM输出。每个定时器都有独立的DMA请求机制。
这些定时器还能够处理增量编码器的信号,也能处理1至3个霍尔传感器的数字输出。
基本定时器
TIM6和TIM7
这2个定时器主要是用于产生DAC触发信号,也可当成通用的16位时基计数器。
独立看门狗
独立的看门狗是基于一个12位的递减计数器和一个8位的预分频器,它由一个内部独立的40kHz的RC振荡器提供时钟;因为这个RC振荡器独立于主时钟,所以它可运行于停机和待机模式。它可以被当成看门狗用于在发生问题时复位整个系统,或作为一个自由定时器为应用程序提供超时管理。通过选项字节可以配置成是软件或硬件启动看门狗。在调试模式下,计数器可以被冻结。
窗口看门狗
窗口看门狗内有一个7位的递减计数器,并可以设置成自由运行。它可以被当成看门狗用于在发生问题时复位整个系统。它由主时钟驱动,具有早期预警中断功能;在调试模式下,计数器可以被冻结。
系统时基定时器
这个定时器是专用于实时操作系统,也可当成一个标准的递减计数器。它具有下述特性:
● 24位的递减计数器
● 自动重加载功能
● 当计数器为0时能产生一个可屏蔽系统中断
● 可编程时钟源
时钟源:定时时钟TIMXCLK,即内部时钟CK_INT,经APB预分频器后分频提供
计数器时钟:定时器时钟经过PSC预分频器之后,即CK_CNT,用来驱动计数器计数
计数器CNT:是一个16位/32的计数器
自动重装载寄存器:这里面装着计数器能计数的最大数值。当计数到这个值的时候,如果使能了中断的话,定时器就产生溢出中断
计时中断时间:
1/(TIMXCLK/(PSC+1))*(ARR+1)