使用STM32定时器中断实现精确定时

目录

一.TIM中断

1.TIM简介

2.定时器类型

1)基本定时器

2)通用定时器

3)高级定时器 

3.时基单元 

 二.TIM输出比较

1.输出比较简介OC

2.PWM

1.PWM简介

2.PWM结构 

3.参数计算 

3.输出比较通道(通用)

1)输出模式控制器

2)至主模式控制器

3)极性选择

4)输出使能电路

5)OCx———GPIO口


一.TIM中断

1.TIM简介

  • 定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断。
  • 16位计数器(CNT),预分配器(PSC),自动重装寄存器(ARR)的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时。72M/65536/65536=1/59.65
  • 不仅具备基本的定时中断功能,而且还包含了内外时钟选择,输入捕获,输出比较,编码器接口,主从触发模式等多种功能。
  • 类型:高级定时器,通用定时器,基本定时器。
  • 2.定时器类型

    STM32F103CT6具有:TIM1,TIM2,TIM3,TIM4

    类型 编号 总线 功能

    高级定时器

    TIM1,TIM8 APB2 拥有通用定时器全部功能,并额外具有重复定时器,死区生成,互补输出,刹车输入等功能
    通用定时器 TIM2,TIM3,TIM4,TIM5 APB1 拥有基本定时器全部功能,并额外具有内外时钟选择,输入捕获,输出比较,主从触发模式等功能
    基本定时器 TIM6,TIM7 ABP1 拥有定时触发,主从式触发DAC的功能

    *DAC:数模转换器,D数,A模,将数字信号转换为模拟信号的电子设备

    1)基本定时器

    *基本定时器只有DAC 而通用和高级定时器不仅有DAC 还有ADC 

    *UI触发DAC较U触发更加消耗CPU

    基本定时器,时钟来源于内部时钟,即72MHz

    预分频器:对输入的基准频率提前进行一个分频操作,且写入值与实际分频数相差1。寄存器写入0,实际不分频(1分频),输出=输入=72MHz;寄存器写1,实际2分频,输出=输入/2=36MHz;由于预分频器寄存器有16为,最大写入65535,即实际65536分频。

    自动重装载寄存器:设置目标值,16位寄存器,目标值最大写入65535。

    计数器:计数器发生自增,一个波形,计数器+1,当达到自动重装载寄存器的值后,清零重新自增并产生中断(如无重复寄存器)。

    UI/U:UI更新中断,通向NVIC中断;U更新事件,触发其他设备。

    2)通用定时器

     CNT计数模式

    *基本定时器只有向上计数模式 

    TIMx_ETR(外部时钟)  :外接电波作为外部时钟

     ITRx:用来实现定时器的级联,类如TIM1的TRGO连接到TIM2的ITRO上,最大定时时间大幅度提高。

     TI1F_ED:连接的是TIMx_CH1的捕获单元的CH1引脚

    TI1FP1/TI2FP2:前者连接CH1的引脚,后者连接CH2的引脚,负责捕获输出电平作为外部时钟。

    编码器接口:读取正交编码器的输出波形 

     输入捕获和输出比较

    3)高级定时器 

    *较前面两个定时器,增加重复计数器 

    3.时基单元 

    缓冲寄存器才是真正起作用的寄存器

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

    计数器溢出频率:CK_CNT_OV=CK_CNT/(ARR+1)=CK_PSC/(PSC+1)/(ARR+1)

     二.TIM输出比较

    1.输出比较简介OC

  • OC(Output Compare)输出比较
  • 输出比较可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1,置0或翻转的操作,用于输出一定频率和占空比的PWM波形
  • 每个高级的定时器和通用定时器都拥有4个输出比较通道(4个共用CCR)
  • 高级定时器的前三个通道额外拥有死区生成和互补输出的功能
  • *IC:Input Capture 输入捕获

    *CC:Capture/Company 表示输入捕获和输出比较的单元

    上图为CCR

    2.PWM

    1.PWM简介

    2.PWM结构 

    3.参数计算 

    PWM频率:    Freq = CK_PSC/(PSC+1)/(ARR+1)

    PWM占空比:Duty = CCR/(ARR+1)

    PWM分辨率:Reso = 1/(ARR+1)

    3.输出比较通道(通用)

    1)输出模式控制器

    可以改变它输出OC1REF(REF:参考信号)的高低电平

    模式 描述
    冻结 CNT=CCR时,REF保持为原状态
    匹配时置有效电平 CNT=CCR时,REF置有效电平(一次性,不适合输出连续变化的波形)
    匹配时置无效电平 CNT=CCR时,REF置无效电平(一次性,不适合输出连续变化的波形)
    匹配时电平翻转 CNT=CCR时,REF电平翻转
    强制为无效电平 CNT与CCR无效,REF强制为无效电平
    强制为有效电平 CNT与CCR无效,REF强制为有效电平
    PWM模式1

    向上计数:CNT<CCR时,REF置有效电平,CNT>=CCR时,REF置无效电平

    向下计数:CNT>CCR时,REF置无效电平,CNT<=CCR时,REF置有效电平

    PWM模式2

    向上计数:CNT<CCR时,REF置无效电平,CNT>=CCR时,REF置有效电平

    向下计数:CNT>CCR时,REF置有效电平,CNT<=CCR时,REF置无效电平

    2)至主模式控制器

    可以把REF映射到主模式的TRGO输出

    3)极性选择

    写0,正常输出。写1,信号就会往下走,信号会通过一个非门取反,那么输出信号就是输出信号高低电平反转的信号。

    4)输出使能电路

    选择是否输出

    5)OCx———GPIO口

     

    作者:魏子hao

    物联沃分享整理
    物联沃-IOTWORD物联网 » 使用STM32定时器中断实现精确定时

    发表评论