intro❗

STM32F407 拥有多达14个定时器
  • 类型与特点:
    • TIM1, TIM8: 高级控制定时器 (16位自动重装载)。
    • TIM2, TIM5: 通用定时器 (32位自动重装载)。
    • TIM3, TIM4: 通用定时器 (16位自动重装载)。
    • TIM6, TIM7: 基本定时器 (16位自动重装载)。
    • TIM9-TIM14: 通用定时器 (16位自动重装载)。
  • 相互独立,不共享任何资源
  • 功能强大,可用于定时、计数、PWM控制等。

TIM1和TIM8特性

  • 16位递增、递减、递增/递减自动重装载计数器
  • 16位可编程预分频器
  • 4个输入或输出通道,可用于输入捕获、输出比较、PWM生成、带死区的PWM互补输出。
  • 可实现多个定时器同步互连。

TIM1和TIM8框图

notion image
包括时钟源、触发控制器、从模式控制器、预分频器 (PSC)、计数器 (CNT)、自动重载寄存器 (ARR)、重复计数器 (REP)、捕获/比较寄存器 (CCRx)、输出控制逻辑和断路输入 (BRK)。

三种计数方式

notion image
  • 递增计数:CNT从0到ARR,周期ARR+1。
  • 递减计数:CNT从ARR到0,周期ARR+1。
  • 中心对齐模式:CNT在0和ARR间来回计数,周期2*ARR。

计数器时序

描述各计数模式下,CK_PSC, CNT_EN, 定时器时钟, 计数器寄存器, 上溢/下溢, 更新事件 (UEV), 更新中断标志 (UIF) 的关系。

PWM❗❗

PWM工作方式❗

  • 设计原理:设置计数方式、计数周期 (ARR决定频率)、比较值 (CCRx决定占空比)。
  • PWM输出 (TIM_CHx):CNT与CCRx比较,满足条件时输出电平变化。
  • 递增方式PWM波形:根据CCRx值与ARR的关系,输出不同占空比波形。
  • 自动控制GPIO口电平翻转
    • 不需要在中断中通过CPU控制,不占用硬件资源
    • 中断中可以修改CRRx、ARR的值来实现频率以及占空比的调节
notion image
设置不同的比较值得到不同的PWM波形
设置不同的比较值得到不同的PWM波形

PWM程序设计❗

  1. 设置计数方式 (Counter Mode)
      • 计数方式决定了定时器计数器的递增、递减或中心对齐模式。
      • 在库函数编程中,这通常通过设置定时器基本初始化结构体(TIM_TimeBaseInitTypeDef)的 TIM_CounterMode 成员来完成。
      • 常见的计数方式包括:
        • 向上计数 (TIM_CounterMode_Up):计数器从 0 开始计数到 TIM_Period (ARR) 值,然后重新从 0 开始计数。
        • 向下计数 (TIM_CounterMode_Down):计数器从 TIM_Period (ARR) 值开始计数到 0,然后重新从 TIM_Period (ARR) 开始计数。
        • 中心对齐模式 (TIM_CounterMode_CenterAligned1/2/3):计数器从 0 计数到 TIM_Period (ARR) 值,然后向下计数到 0。这种模式常用于生成对称的 PWM 波形。
      • 配置方式示例 (库函数)
    1. 设定预分频 (Prescaler)
        • 预分频器用于降低定时器时钟的频率,从而控制计数器计数的速度。
        • 定时器时钟频率 = 外设总线时钟频率 / (预分频值 + 1)。
        • 在库函数编程中,这通过设置 TIM_TimeBaseInitTypeDefTIM_Prescaler 成员来完成。
        • 例如,如果主频为 168MHz,要得到 1MHz 的定时器时钟,预分频值应设为 168 - 1 = 167。
        • 配置方式示例 (库函数)
      1. 设定计数周期(TIMx_ARR 寄存器)
          • 计数周期(也称为自动重装载值 ARR)决定了 PWM 波形的周期。
          • PWM 周期 = (ARR + 1) * 定时器时钟周期。
          • 在向上计数模式下,计数器从 0 计数到 ARR 值,完成一个周期。
          • 在库函数编程中,这通过设置 TIM_TimeBaseInitTypeDefTIM_Period 成员来完成。
          • 配置方式示例 (库函数)
        1. 设定占空比(TIM_CCRx 寄存器)
            • 占空比由比较值(Capture/Compare Register, CCRx)决定。
            • 对于向上计数模式的 PWM 模式 1:当计数器值小于 CCRx 时,输出为高电平;当计数器值大于等于 CCRx 时,输出为低电平。
            • 占空比 = (CCRx / (ARR + 1)) * 100%。
            • 在库函数编程中,这通常通过设置 TIM_OCInitTypeDef 结构体的 TIM_Pulse 成员来完成。
            • 配置方式示例 (库函数)
          整体配置流程(库函数编程示例)
          通过以上步骤,您就可以在 Cortex-M 微控制器上配置并生成所需的 PWM 波形了。
          Loading...
          Z_cosy
          Z_cosy
          浙江大学电气工程学院本科生
          公告
          🎉Welcome to Z-cosy🎉
          -- 食用指南 ---
          目前只有课程笔记以及电控学习笔记
          陆续会整理更多内容!