STM32——TIM输出比较、PWM(十)

一、输出比较及PWM简介

输出比较

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

PWM

•PWM(Pulse Width Modulation)脉冲宽度调制
•在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速等领域
•PWM参数:

频率 = 1 / TS 占空比 = TON / TS 分辨率 = 占空比变化步距

二、PWM的基本结构

时基单元(含 CNT、ARR)------ 提供周期性计数时间轴

时基单元的核心是计数器CNT+ 自动重装值ARR,为 PWM 生成提供固定的周期节奏CNT从 0 开始,随定时器时钟自动向上累加,数到ARR后立即归 0,循环执行0→ARR→0 的计数过程;这一完整计数循环,就是一个 PWM 周期,是后续电平切换的时间基础。

比较器 ------ 执行CNT 与 CCR 的实时比对

比较寄存器CCR预存设定的固定阈值,硬件比较器以定时器时钟为节拍,在 CNT 计数的每一个时刻 ,将实时变化的 CNT 值固定的 CCR 值 做持续、自动的大小比较,实时输出CNT<CCRCNT≥CCR的比对结果,为电平切换提供判定依据。

执行电平切换规则(PWM 生成的核心逻辑)

向上计数为核心规则(图中核心),根据比较器的比对结果,直接控制输出电平的切换:

  • 当比对结果为CNT<CCR 时,输出有效电平
  • 当比对结果为CNT≥CCR 时,输出无效电平;随 CNT 完成 0→ARR→0 的循环,电平按此规则重复切换,形成连续的 PWM 波形。

极性选择 ------反转 / 保持原始 REF 电平

极性选择是原始 REF 波形 做最后一次电平逻辑处理,是可配置的可选环节,核心作用为灵活调整输出电平的有效 / 无效对应关系

  • 选择不反相:最终输出的 PWM 电平与 REF 原始波形完全一致,即 REF 的有效电平 = 最终输出有效电平,REF 的无效电平 = 最终输出无效电平;
  • 选择反相:最终输出的 PWM 电平与 REF 原始波形完全相反,即 REF 的有效电平 = 最终输出无效电平,REF 的无效电平 = 最终输出有效电平。

三、输出比较

输出比较通道(通用)

捕获和比较寄存器是同一个

  1. 输出模式控制器 这是核心决策单元,它接收计数器(CNT)和比较寄存器(CCR1)的比较结果(CNT > CCR1CNT = CCR1),并根据 TIMx_CCMR1 寄存器里的 OC1M[2:0] 位配置,生成原始参考信号 OC1REF。这个信号决定了 PWM 的基础波形。

  2. 信号极性与选择

    • OC1REF 先经过一个反相器,再进入一个由 CC1PTIMx_CCER寄存器位)控制的 2 选 1 多路选择器。
    • CC1P=0 时直接输出 OC1REFCC1P=1 时输出反相后的信号,以此来控制 PWM 输出的极性。
  3. 输出使能电路 最终信号会经过由 CC1ETIMx_CCER寄存器位)控制的输出使能电路。只有当 CC1E=1 时,信号才能通过并最终从 OC1 引脚输出;CC1E=0 时,通道输出会被关闭。OC1 经过复用功能(AF) 路由后,到达具体的 GPIO 口。

  4. 主模式控制器接口 OC1REF 还会被送到主模式控制器,这可以用来触发其他定时器或外设,实现定时器同步等更复杂的功能。

四、舵机、直流电机、驱动芯片

舵机

•舵机是一种根据输入PWM信号占空比来控制输出角度的装置
•输入PWM信号要求:周期为20ms,高电平宽度为0.5ms~2.5ms

硬件电路

舵机内部能识别PWM的占空比,只需要输入相应的PWM就可以让它旋转指定角度。

直流电机及驱动

•直流电机是一种将电能转换为机械能的装置,有两个电极,当电极正接时,电机正转,当电极反接时,电机反转
•直流电机属于大功率器件,GPIO口无法直接驱动,需要配合电机驱动电路来操作
•TB6612是一款双路H桥型的直流电机驱动芯片,可以驱动两个直流电机并且控制其转速和方向

  1. 方向控制(AIN1/AIN2 的电平组合)
  • 正转:AIN1=H,AIN2=L → AO1 输出高电平,AO2 输出低电平,电机两端形成正向电压差。

  • 反转:AIN1=L,AIN2=H → AO1 输出低电平,AO2 输出高电平,电机两端形成反向电压差。

  • 制动:AIN1=H,AIN2=H 或 AIN1=L,AIN2=L → AO1 和 AO2 输出相同电平,电机两端无电压差,实现快速刹车。

  • 停止:AIN1=L,AIN2=L 且 PWM=L → 电机无供电,自然停转。

  1. 速度控制(PWMA 的 PWM 占空比)
  • PWM 的占空比越高,电机两端的平均电压越高,转速越快;

  • 占空比越低,平均电压越低,转速越慢;

  • 当 PWM 为低电平时,电机无供电,停止转动。

相关推荐
bubiyoushang88840 分钟前
利用STM32实现Modbus通信(RTU从机方案)
stm32·单片机·嵌入式硬件
cmpxr_2 小时前
【单片机】常用设计模式
单片机·嵌入式硬件·设计模式
杰杰桀桀桀2 小时前
4*4无时延矩阵键盘(非阻塞)--附代码链接
stm32·单片机·嵌入式硬件·矩阵·计算机外设·无时延矩阵键盘
奶茶拌火锅2 小时前
EB配置Tc27x——MCU
单片机·嵌入式硬件
cmpxr_2 小时前
【单片机】STM32Fxx启动模式怎么接
stm32·单片机·嵌入式硬件
篮子里的玫瑰2 小时前
STM32 时序计算指南:时钟周期与波特率深入剖析
stm32·单片机·嵌入式硬件
feifeigo1232 小时前
基于STM32F407和WM8978的MP3播放程序设计与实现
stm32·单片机·嵌入式硬件
点灯小铭3 小时前
基于单片机的智能感应式汽车雨刮器控制系统设计
单片机·嵌入式硬件·汽车·毕业设计·课程设计·期末大作业
独小乐3 小时前
007.GNU C内联汇编杂谈|千篇笔记实现嵌入式全栈/裸机篇
linux·c语言·汇编·单片机·嵌入式硬件·arm·gnu
清风6666663 小时前
基于单片机的自动存包柜设计
单片机·嵌入式硬件·mongodb·毕业设计·课程设计·期末大作业