STM32定时器——定时器中断的计时应用

定时器分类

定时器

常用三种定时器的区别

定时器

通用定时器功能特点的描述

STM32的众多定时器中我们使用最多的是高级定时器和通用定时器,而高级定时器一般也是用作通用定时器的功能,下面我们就以通用定时器为例进行讲解,其功能和特点包括:

  • 通用与基本定时器(2~7)位于低速的APB1总线上

  • 高级定时器(1、8)位于高速的APB2总线上

  • 自动装载计数器(TIMx_CNT)有16 位向上、向下、向上/向下(中心对齐)计数模式。

  • 预分频器(TIMx_PSC)是16 位可编程(可以实时修改)的,计数器时钟频率的分频系数由它设置,可以为 1~65535 之间的任意数值。

  • 每个定时器都有4个独立的通道,这4个通道与相应的引脚一一对应可以查表

  • 4 个独立通道(TIMx_CH1~4),这些通道功能可以用来作为:

    • 输入捕获
    • 输出比较
    • PWM 生成(边缘或中间对齐模式)
    • 单脉冲模式输出
  • 可使用外部信号(TIMx_ETR)控制定时器和定时器互连(可以用 1 个定时器控制另外一个定时器)的同步电路。

  • 如下事件发生时产生中断/DMA(6个独立的IRQ/DMA请求生成器): (前4件用的比较多)

    • 更新中断(TIM_IT_Update):计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)
    • 触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)
    • 输入捕获
    • 输出比较
    • 支持针对定位的增量(正交)编码器和霍尔传感器电路
    • 触发输入作为外部时钟或者按周期的电流管理
  • STM32 的通用定时器可以被用于:测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和 PWM)等。

  • 使用定时器预分频器和 RCC 时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。STM32 的每个通用定时器都是完全独立的,没有互相共享的任何资源。

定时器的原理

时基单元包含:

  • 计数器寄存器(TIMx_CNT) :不断计数
  • 预分频器寄存器 (TIMx_PSC) :分频系数
  • 自动装载寄存器 (TIMx_ARR):装载值
    1
    时钟信号经过PSC分频后作为定时器的时钟频率
    计数器从ARR值开始计数,达到阈值后溢出触发中断。然后重新从ARR开始计数

定时器定时时间的计算

预分频后的频率为f,计数值为CNT,时间就是CNT / f

计数器模式

  • 向上计数模式(从0到ARR的值)
  • 向下计数模式(从ARR的值到0)
  • 中央对齐模式(向上/向下计数) (在中央对齐模式,计数器从0开始计数到ARR寄存器−1,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器下溢事件;然后再从0开始重新计数。)
    计数模式

时钟选择

计数器时钟可由下列时钟源提供:两个内部时钟、两个外部时钟

  • 内部时钟(CK_INT)(用的最多)
  • 外部时钟模式1:外部输入脚(TIx),定时器下通道输入捕获捕获的信号
  • 外部时钟模式2:外部触发输入(ETR),外部IO口输入的时钟信号
  • 内部触发输入(ITRx):使用一个定时器作为另一个定时器的预分频器,如可以配置一个定时器Timer1而作为另一个定时器Timer2的预分频器(仅2.3.4定时器有)。参见14.3.15

基本定时器的功能只占通用定时器的一部分,所以学习基本定时器比较简单易上手,新手先看参考手册的基本定时器章节。
先掌握基本定时器是最佳的选择。

定时器

计算定时器时钟频率(两个总线频率不同)以APB1为例:
如果AHB=72M,APB1由AHB分频可得不同的频率72/1,72/2,72/4,72/8,72/16。
PCLK1最大为36M不能1分频(这里不会用到它)
TIMxCLK的值由APB1决定,APB1=AHB/1时,TIMCLK=APB1;APB1=AHB/2、4、8、16时,TIMCLK=APB1×2=AHB/2、4、8、16×2。
例AHB=72,APB1=72,则TIMCLK=72
例AHB=72,APB1=36,则TIMCLK=72÷2×2

时钟

实验:定时器中断

例:计算溢出时间每500ms产生更新中断
Tout=(ARR+1)÷[(TIMCLK)÷(PSC+1)]
例500ms=(4999+1)÷[(72M)÷(7199+1)]

在这里插入图片描述

与中断有关的位:UIF位、UIE位

UIE
在这里插入图片描述

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值