PWM频率计算 测频法 测周法 输出比较与输入捕获

单片机型号:stm32f103c8t6

实验前置知识

1、输出比较与输入捕获

在这里插入图片描述
四个输入捕获和输出比较公用四个CCR寄存器
在这里插入图片描述
CH1到CH4四个通道的引脚,也是共用的

IC(Input Capture)输入捕获

  • 输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存到CCR中,可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数
  • 每个高级定时器和通用定时器都拥有4个输入捕获通道
  • 可配置为PWMI模式,同时测量频率和占空比
  • 可配合主从触发模式,实现硬件全自动测量
    在这里插入图片描述

OC(Output Compare)输出比较

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

2、PWM相关参数概念及计算公式

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

  • 频率 = 1 / T_s
  • 占空比 = T_on / T_s
  • 分辨率 = 占空比变化步距(如果占空比只能1%2%3%这样跳,分辨率就是1%)
  • T_s 一个高低电平周期
    在这里插入图片描述
  • PSC:预分频系数
  • ARR:计数个数
  • CRR:比较值
    计算公式
  • PWM频率: Freq = CK_PSC / (PSC + 1) / (ARR + 1)
  • PWM占空比: Duty = CCR / (ARR + 1)
  • PWM分辨率: Reso = 1 / (ARR)

3、PWM频率计算举例

1、对72M进行7200分频得到10K,再在10K的频率下计数10000,则最终频率为1Hz

2、对72M进行7200分频得到10K,再在10K的频率下计数1000,则最终频率为10Hz

3、(逆向计算)如果要产生一个频率1KHz,占空比50%,分辨率为1%的PWM波形
PWM频率:72M/(PSC+1)/(ARR+1)=1000
PWM占空比:Duty=CCR/(ARR+1)=50%
PWM分辨率:Reso= 1/(ARR+1)=1%
解得ARR+1=100、CCR=50、PSC+1=720

4、测频法测周法计算频率

在这里插入图片描述
测频法闸门内计次 一秒内有多少个上升沿频率就是多少 闸门时间结束时可能卡在中间,所以正负一误差 测周法,只测一个周期(高电平加无效电平)就能出一次结果,所以结果更新快,但是会受噪声影响,波动比较大
高频适合测频法, 低频适合测周法
(注意右边测周法ARR要大,取极端情况黑色小缺口甚至比蓝色缺口大了,一次都记不到)
ARR设置最大值防止计数溢出
在这里插入图片描述

5、PWMI模式测频率以及占空比原理(测周法)

PSC=72MHz/72=1MHz ARR=65535 f=PSC/ARR~=15Hz;
此种设置下能测最低频率为15Hz
要测更低频率只能修改PSC(预分频系数)改小点,提高标准频率,ARR已经最大值。
在这里插入图片描述

测周法公式,标准频率除以周期内计次数
在这里插入图片描述

在这里插入图片描述

一、LED中断翻转LED(HAL库)

1、实现思路

用定时中断回调函数控翻转电平实现LED循环亮灭

2、CubeMX配置流程

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3、主要代码

代码

//中断
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    if (htim->Instance == TIM2)
    {
        HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
    }
}
HAL_TIM_Base_Start_IT(&htim2);
//主函数添加

4、实验现象

TIM_LED

二、PWM呼吸灯(HAL库)

1、思路

通过设置ARR 和PSC调整端口高低电平持续时间以及频率实现呼吸灯

2、CubeMX配置步骤

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
设置PSC和ARR
在这里插入图片描述

3、实验现象

PWM_LED

三、测频率和占空比(标准库)

1、思路

配置两条输入捕获通道,一条捕获高电平,一条用于周期计数,通过这两个值计算频率和占空比
在这里插入图片描述
在这里插入图片描述

2、标准库代码实现

在这里插入图片描述

3、实验现象

在这里插入图片描述

参考以下链接
https://blog.csdn.net/qq_33728095/article/details/96159745
https://blog.csdn.net/qq_52528413/article/details/119857878

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值