stm32之通用定时器TIM

STM32系列的CPU,有多达8个定时器;

  1、其中TMI1和TIM8是能够产生三对PWM互补输出的高级定时器,常用于三相电机的驱动;它们的时钟有APB2的输出产生;

  2、其它6个为普通定时器,时钟由APB1的输出产生;

定时器的作用:

  1、定时功能  2、计数功能  3、输入捕获  4、匹配输出  5、PWM脉冲波输出

概述:

通用定时器是一个通过可编程预分频器驱动的16位自动装载计数器构成。它适用于多种场合,包括测量输入信号的脉冲长度(输入采集)或者产生输出波形(输出比较和PWM)。

  定时器是完全独立的,而且没有互相共享任何资源。它们可以一起同步操作;

注意点:只要使用默认的库配置方式配置时钟为72M,无论TIM1还是TIMX,它们的计数频率都是72M;

主要特性

通用TIMx定时器特性包括:
  ? 16 位向上,向下,向上/向下自动装载计数器
  ? 16 位可编程预分频器,计数器时钟频率的分频系数为1~65535 之间的任意数值
  ? 4个独立通道:
    ─ 输入捕获
    ─ 输出比较
    ─ PWM生成(边缘或中间对齐模式)
    ─ 单脉冲模式输出
? 使用外部信号控制定时器和定时器互连的同步电路
? 如下事件发生时产生中断/DMA:
  ─ 更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)
  ─ 触发事件(计数器启动,停止,初始化或者由内部/外部触发计数)
  ─ 输入捕获
  ─ 输出比较

stm32之通用定时器TIM_第1张图片

 

定时器时钟系统:

  定时器的时钟不是直接来自APB1或APB2,而是来自输入为APB1或APB2的一个倍频器;

APB1不但要为TIM2-7提供时钟,而且还要为其他外设提供时钟;设置这个倍频器可以保证其他外设使用较低时钟频率时,TIM2-7扔能得到较高的时钟频率;

连接引脚:

      stm32之通用定时器TIM_第2张图片

时钟选择:

  例如,要配置向上计数器在T12输入端的上升沿计数(外部计数功能配置),使用下列步骤配置:

    1、配置TIMx_CCMR1寄存器CC2S=01,配置通道2检测TI2输入的上升沿;

    2、配置TIMx_CCMR1寄存器的IC2F[3:0],选择输入滤波器带宽(如果不需要滤波,设置IC2F=0000)

    3、配置TIMX_CCER寄存器CC2P=0,选定上升沿极性;

    4、配置TIMx_SMCR寄存器的SMS=111,选择定时器外部时钟模式1;

    5、配置TIMx_SMCR寄存器中的TS=110,选定TI2作为触发输入源;

    6、设置TIMx_CR1寄存器的CEN=1,启动计数器;

  当上升沿出现在TI2,计数器计数一次,且TIF标志被设置;

  当TI2的上升沿和计数器实际时钟之间的延时取决于TI2的输入端的重新同步电路;

功能选择:

  如果时钟源采用内部时钟,则可以精准定时;

  如果时钟源采用外部脉冲输入,则可以完成计数功能;

实例:

  定时器实验:

    通过配置定时器相关寄存器,实现定时器2每1s中断一次,通过数码管将时间实时显示出来;

  引导:

    1、利用TIM_DeInit()函数将Timer设置为默认缺省值;

    2、TIM_InternalClockConfig()选择TIMx来设置内部时钟源;(时钟源的来源有三种:1、内部时钟,可以分频,比较准确;2、外部脉冲输入;3、其他定时器分频)

    3、TIM_Perscaler来设置预分频系数;(内部时钟太快了;一般要分频)

    4、TIM_ClockDivision来设置时钟分割;

    5、TIM_CounterMode来设置计数器模式;(向上计数/向下计数/中央模式)

    6、TIM_Period来设置自动装入的值;(初值)

    7、TIM_ARRPerloadConfig()来设置是否使用预装载缓冲器;(影子寄存器是否直通)

    8、TIM_ITConfig()来开启TIMx的中断;

具体参见代码;

 

你可能感兴趣的:(stm32之通用定时器TIM)