使用STM32 HAL库检测PWM频率和占空比

目录

  • 1.STM32CubeMX配置
  • 2.程序应用
  • 1.STM32CubeMX配置

    配置的系统时钟是100M,Timer的时钟也是100M


    Timer 的频率为:100M 分频 1000 = 0.1MHz 也就是定时器 每10us 计一个数

    打开TIM4_CH2引脚中断


    2.程序应用

    main.c中开启中断

      HAL_TIM_IC_Start_IT(&htim4, TIM_CHANNEL_1); // 开启tim4通道1的中断
      HAL_TIM_IC_Start_IT(&htim4, TIM_CHANNEL_2); // 开启tim4通道2的中断
    

    TIM4_CH2引脚中断回调

    static uint32_t TempPIpre = 0;
    static uint32_t TempPIpul = 0;
    void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
    {
    
      if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_2)
      {
        TempPIpre = HAL_TIM_ReadCapturedValue(&htim4, TIM_CHANNEL_1); // 1.读取高电平时间
        TempPIpul = HAL_TIM_ReadCapturedValue(&htim4, TIM_CHANNEL_2); // 2.读取整周期时间
        __HAL_TIM_SetCounter(&htim4, 0);                              // 3.定时器计数清零
      }
    }
    

    占空比%:TempPIpre *100 / TempPIpul
    周期T: TempPIpul * 10us
    频率f: 1 / T

    物联沃分享整理
    物联沃-IOTWORD物联网 » 使用STM32 HAL库检测PWM频率和占空比

    发表评论