问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

学习如何让STM32在运行时改变PWM频率和占空比

创作时间:
作者:
@小白创作中心

学习如何让STM32在运行时改变PWM频率和占空比

引用
CSDN
1.
https://m.blog.csdn.net/m0_67403143/article/details/144730914

最近有个需求是关于调节占空比去控制风扇实现三挡风力大小的。由于硬件供电和控制成本等原因,普通的芯片支撑不起几个风扇同时转起来,于是就沿用了一个神奇的电路方案,但是这个方案在输出占空比的时候达不到真正的占空比(这里解释不清),因为电机类需要特别注意频率的大小,频率太高或者太低或多或少都会让人耳接受不了,反正是需要在运行时同时改变PWM频率和占空比,本文着重于应用,不讲原理。

一、定时器介绍

使用的是野火指南者STM32F103VET6,该板子有8个定时器,其中TIM6和TIM7属于基本定时器,TIM1和TIM8属于高级定时器,本文使用通用定时器TIM3即可。

定时器分类(适用于指南者)

TIMx
功能
基本定时器
TIM6、TIM7
通用定时器
TIM2、TIM3、TIM4、TIM5
高级定时器
TIM1、TIM8

基本定时器(TIM6、TIM7)

  • 基本定时功能
  • 可用于触发DAC外设

通用定时器(TIM2、TIM3、TIM4、TIM5)

  • 输出比较(时序和延迟生成)
  • 单脉冲模式
  • 输入捕获(用于测量外部信号频率)
  • 传感器接口(编码器和霍尔传感器)等各种场合

高级定时器(TIM1、TIM8)

  • 除通用功能外,它们还包含一些与电机控制和数字能量转换应用相关的功能:
  • 三个带死区控制的互补信号
  • 紧急关断输入
  • 单通道或双通道定时器:用作通用定时器,通道数有限
  • 带互补输出的单通道或双通道定时器:与上一类型相同,只是其中一个通道上具有死区发生器。这样可得到时基与高级定时器无关的互补信号。

二、PWM的周期、频率、占空比计算

在STM32中PWM的周期、频率、占空比等计算基本上是使用了TIM的时基单元,下面是时基结构体的介绍。

typedef struct
{ 
    uint16_t TIM_Prescaler;            //驱动CNT计数器的分频器1-65536,都有
    uint16_t TIM_CounterMode;          //计数器计数模式,TIMx,x[6,7]没有,其他都有
    uint16_t TIM_Period;               //自动重装载寄存器,都有
    uint16_t TIM_ClockDivision;        //时钟分频因子,TIMx,x[6,7]没有,其他都有
    uint8_t TIM_RepetitionCounter;     //重复计数器的值,TIMx,x[1,8]才有
}TIM_TimeBaseInitType;

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号