TIM时钟(STM32)

您所在的位置:网站首页 stm32寄存器介绍 TIM时钟(STM32)

TIM时钟(STM32)

2023-07-11 03:01| 来源: 网络整理| 查看: 265

来源:在学习江协科技(原名江科大自化协)是记录的笔记,链接↓↓↓(有些是从弹幕中记下来的,有不对的有劳指正。)

[6-1] TIM定时中断_哔哩哔哩_bilibili

中断分为外部中断和定时器中断。

可理解为,外部中断是外设电平变化引起的中断,而定时器中断是以外部信号当作时钟脉冲

此章节介绍TIM时钟

TIM简介

补充:

1)72MHz就是一秒计72M个数(周期是频率的倒数)。所以如果我对72MHz计72个数,(72/72M)*1=1us,即定时1us。 

2)3个重要的寄存器(构成时基单元):

计数器是用来执行计数定时的寄存器,每来一个时钟,计数器加一。

预分频器:可以对计数器的时钟进行分频,使计数器更加灵活。

自动重装寄存器(ARR):计数的目标值,就是我想计数多少个时钟后申请中断。

 3)不同的型号定时器的数量是不同的,使用前参考数据手册。

分析基本定时器的工作原理和过程

预分频器:对输入的基准频率提前进行一个分频操作,16位,最大65535。直接连接内部时钟,当寄存器的值为0时,输入频率=输出频率;当寄存器为1时,输出频率=输入频率/2(输入72MHz,输出36MHz),即:

实际分频系数=预分频系数+1

 计数器计数频率:CK_CNT= CK_PSC/(PSC+1)

(PSC指的是预分频系数)

计数器:没来一个上升沿,计数器加一,16位,从0开始加,最大加到65535,达到65535后又重新从0开始计时。(这种从0开始向上增加的计数模式是向上计数)

所以计时器是一个在定时过程中自增的器件,达到目标值后,就会产生中断,并清零计数器,自动开启下一段计时,而这个目标值的存储,需要一个新的寄存器,这个寄存器就是自动重装寄存器。因为达到目标值而产生的中断,我们称为更新中断。更新中断后通往NVIC。

分析通用计时器的工作原理和过程

基本部分还是时基单元(3个寄存器)

通用计时器和基本定时器的区别:

1)计数器计数模式

基本计时器只能采取向上计数的模式;

通用计时器可以采取向上计数,向下计数,中央对齐,三种模式。

2)时钟源

基本定时器只能连接内部时钟源,即72MHz;

通用计时器可以选择连接内部时钟源和外部时钟源。

其中外部时钟源

1)外部ETR引脚提供时钟

2)TRGI提供时钟(触发从模式)----可以结合主模式实现定时器的级连

通向TRGI的通路方法(外部时钟模式1):

①其他定时器    ②CH1引脚边沿(ED表示不管是上升沿还是下降沿都可以) 

③CH1引脚        ④CH2引脚

输入捕获和输出比较电路

即下半部分电路,此章节暂时略过这一部分的讲解,先明白输入捕获和输出比较不能够同时进行,因为中间一部分电路是共用的,详细讲解在下一章。

定时器中断结构图  预分频器时序

CK_PSC----预分频器的输入时钟:

CNT_EN-----计数器使能:高电平正常运行,低电平计数器停止

CK_CNT----预分频器的时钟输出(根据预分频器寄存器中的数字,判断输出频率和原频率的关系),计数器的时钟输入

从图可以看出ARR自动重装值就是FC

预分频器控制寄存器:供我们读写用,并不直接产生分频作用

预分频缓冲寄存器:真正起分频作用

简述分频过程:如果在一个周期内,预分频器的参数发生了变化,即预分频控制寄存器立即发生改变,但计数频率不会立刻发生改变,因为预分频缓冲器不会立即发生改变。预分频缓冲器会等这一整个周期过完后,即发生更新事件之后,才发生变化,从而影响计数频率。而缓冲器能影响频率的本质也是计数器(预分频计数器),回到0时产生一个脉冲,从而实现改变频率。如下图。

计数器计数频率:CK_CNT= CK_PSC/(PSC+1)

(PSC指的是预分频值)

区别一下预分频值和预分频系数,预分频值在计算时要加1,预分频系数不用

计数器时序

1)CK_INT:内部时钟72MHz

2)CNT_EN:时钟使能(高电平打开) 

3)定时器时钟(也是计数器时钟):此图内部分频系数为2,所以原内部频率除以2。

4)计数器寄存器:计数器在时钟每个上升沿自增,当自增到0036时溢出,产生中断,然后置零重新计数

5)更新事件:每次溢出会发生更新事件

6)更新中断标志位:该位置1时,就会申请中断,中断响应后要手动清零。

计数器溢出频率(溢出时间取倒数,溢出时间即定时时长):

CK_CNT_OV = CK_CNT / ( ARR + 1)

                                            =  CK_PSC / ( PSC + 1) / ( ARR + 1)

( 溢出频率 = 计数频率 /(重装目标值 + 1))

ARR需要加一的原因:假设是0036为目标值,但实际上是从0开始计数,所以一共是0037位数。

和预分频器一样,计数器也有自己的缓冲寄存器,若令ARP1=1,则有预装时序,为0则没有

下面先介绍计数器无预装时序

 在箭头处将目标值从FF变成了36,那么计数器的标准是立刻改变,自增到36就会中断

但这种方式容易出现一种情况,就是当自动加载寄存器改变目标值为36的时候,计数器此时已经自增到比36还要大的数字,这是计数器会不断自增下去没有界限,直到达到65535,在变成0,然后重新计数。

因此可以使用计数器有预装时序,影子寄存器功能就和预分频缓冲器器的功能一样,保证值的变化和更新时间同步发生。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3