蓝桥杯嵌入式之PWM

一、频率的计算

htim17.Instance = TIM17;
  htim17.Init.Prescaler = 4000-1;    //预分频系数
  htim17.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim17.Init.Period = 99;               //ARR 自动重装载值
  htim17.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  htim17.Init.RepetitionCounter = 0;
  htim17.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;

首先,要明确两点:

  1.  ARR(TIM_Period) 是计数值;
  2. PSC(TIM_Prescaler) 是预分频值。
  3. 计算公式:Fpwm = 主频 / ((ARR+1)*(PSC+1))(单位:Hz)

1.例如:200Hz =主频 /( Prescaler +1 XPeriod + 1)=80 000 000 /(4000 X100)= 200Hz

 2.周期T=1/200Hz=0.005s=5ms

二、如何更改PWM频率(周期)

#define __HAL_TIM_SET_AUTORELOAD(__HANDLE__, __AUTORELOAD__) 

用法:__HAL_TIM_SET_AUTORELOAD(&htim17,500-1);

 这个函数可以改变自动重装载值,就可以改变PWM频率。

三、如何改变PWM的占空比

#define __HAL_TIM_SET_COMPARE(__HANDLE__, __CHANNEL__, __COMPARE__) 

用法: if(pa7_duty >=100)   pa7_duty=10;
      __HAL_TIM_SetCompare(&htim17,TIM_CHANNEL_1,pa7_duty);

这里就是把占空比设置为10%

四、STM32CubeMx配置级使用

 

1.初始化开启定时器PWM通道

2.在以下头文件中找到设置PWM频率的函数

通过F12可以跳转到这个宏的定义及函数的用法

四、设置占空比 (和设置周期频率也一样)

脉冲宽度调制模式可以生成一个信号,该信号频率由自动重装载寄存器(TIMx_ARR)寄存器值决定,其占空比则由捕获/比较寄存器(TIMx_CRx)寄存器决定。

-------------------------------------------------------------------------------------------

PWM频率:Freq = 定时器时钟主频  /  [(ARR+1) * (PSC+1)]

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

Pulse 是 捕获/比较寄存器(CCR)的值

-------------------------------------------------------------------------------------------

   

 

  • 30
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值