【STM32学习笔记7.1】定时器基本原理

前言

本系列文章统一围绕STM32F103C8T6最小系统开发板进行记录,如涉及其他开发板将会特别说明。

基本概念

  • 主要功能
    • 嵌入式领域中广泛应用, 主要通过计时、计数的方式,周期性执行某件工作,如检测、响应、控制等。
    • 应用场合:输入捕获、输出波形、计时等。
  • 类型
    • 硬件定时器
      • 由硬件资源决定,其精度主要由硬件时钟决定
      • 单个硬件定时器可以扩充出多个软件定时器
    • 软件定时器:由软件实现 – 循环延时
  • 工作原理:本质上是一个计数器,当计数器计满溢出时,代表着一次事件,即完成一次计时。

STM32F1x定时器

  • 8个Timer定时器+1个系统嘀嗒定时器(SysTick)+2个看门狗定时器

  • Timer定时器

    • 基本定时器:2个,TIM6/7
      • 16位(计数器分辨率),只能向上计数,只能定时,没有外部IO
    • 通用定时器:4个,Timer2/3/4/5
      • 16位,可向上/下计数,可以定时、输出比较、输入捕捉
      • 每个定时器有4个外部IO
    • 高级定时器:2个,TIM1/8
      • 16 位,可向上/下计数的定时器,可定时、输出比较、输入捕捉,还有三相电机互补输出信号,
      • 每个定时器有8个外部IO
  • SysTick定时器

    • ARM Cortex-M3 内核的处理器内部包含了一个 SysTick 定时器,它是一个24 位的倒计数定时器。
    • 时钟来源为处理器时钟或外部时钟。
    • 考虑到MCU的资源有限,通常延时功能通过systick定时器来实现,而通用定时器更多地用于输入捕获、PWM输出等功能。
  • 看门狗定时器

    • 用于检测程序是否运行正常,当计时超过某个设定的数值时,将会判断程序异常,并强制复位。

时基单元

  • 作用:计数,可向上计数、向下计数或者向上向下双向计数。
  • 组成
    • 计数器寄存器(TIMx_CNT)
    • 预分频器寄存器 (TIMx_PSC)
    • 自动装载寄存器 (TIMx_ARR)
  • 计数模式
    • 向上计数模式(0—ARR)。

      • 计数器从0计数到自动加载值(自动装载寄存器中的值)。
      • 重新从0开始计数并产生一个计数器溢出事件。
    • 向下计数模式(ARR—0)

      • 计数器从自动加载值(自动装载寄存器中的值)到0。
      • 从自动加载值重新开始并且产生一个计数器向下溢出事件。
    • 中央对齐模式(向上向下计数)(0—(ARR-1)—ARR—1)

      • 计数器从0开始计数到自动加载值,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器下溢事件,然后再从0开始重新计数。

定时器时钟源

SYSCLK = 72MHz
AHB = 72MHz
APB1 = AHP / 2 = 36MHz,APB1的分频系数为2
所以通用定时器的时钟为APB1 * 2 = 72MHz

定时器时钟源

定时器计时原理

定时器时钟源每tick一次,预分频器计数器值+1,直到达到预分频器的设定值,然后再tick一次后计数器归零,同时,CNT计数器值+1。


定时器计时原理
  • 预分频器计一个数的时间为:(psc+1)/TIM\_CLK
  • 定时器溢出时间则为:(arr + 1)(psc +1)/TIM\_CLK
  • 根据定时器时钟频率,选择合适的psc和arr数值进行定时器时间设置:
    如TIM_CLK = 72MHz,设置psc = 1,arr = 35999,则溢出时间为1ms。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容