STM32标准库+HAL库 输入捕获测量PWM的脉冲频率+占空比_stm32 pwm 捕获 hal(2)

本文详细介绍了如何在STM32中使用HAL库和标准库配置TIM输入捕获功能,以测量PWM的频率和占空比,包括单通道捕获策略和TIM3/TIM4的配置实例,以及相应的中断处理函数.
摘要由CSDN通过智能技术生成

TIM输入捕获的流程配置思路:

  1. 配置总线时钟
  2. 配置GPIO端口引脚
  3. 配置TIM定时器时基
  4. 配置NVIC中断
  5. 配置IC输入捕获模式

如果只采集PMW脉冲的频率,那么只需要使用单通道采集上升沿(或下降沿)信号,就可以求得频率值。(两次高电平或两次低电平之间的时间值,就可以计算出PWM的频率)。如果不仅需要采集PWM频率,还要采集PWM的占空比,那么需要同时采集上升沿和下降沿信号。

采集PWM脉冲频率及占空比数据可以使用单通道采集,也可以使用双通道采集。本文讲解单通道采集PWM频率+占空比,即采集一个周期内的 2次上升沿+1次下降沿或2次下降沿+1次上升沿。

在将计数器counter period的值,也就是自动重装载值ARR拉满时(0~0xFFFF),修改配置预分频PSC的值可以调整定时器的定时时间t。

2、HAL库版TIM输入捕获

配置PA7为脉冲捕捉引脚,TIM3_CH2

在STM32CubeMX中配置步骤如下:

生成了代码工程代码后,在其回调函数中,进行读取PWM输入捕获计数值,以进行频率+占空比计算操作。

HAL库TIM中断回调函数:

volatile float TIM3CH2_Freq = 0.0;
volatile float TIM3CH2_Duty = 0.0;
volatile int capture_end_flag = 0;

volatile uint32_t high_val = 0;
volatile uint32_t low_val = 0;

//TIM单通道采集PWM频率+占空比
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{    
    static uint8_t capture_cnt = 1;    //电平捕捉计数
    
    if(htim->Instance == TIM3)        //判断是否由定时器3产生
    {
        if(htim->Channel == HAL_TIM_ACTIVE_CHANNEL_2)    //TIM3 通道2
        {    
            if(capture_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值