通用定时器 输入捕获 +hal实现检测pwm周期和频率

一,通用定时器输入捕获

功能:捕获输入通道上信号的上升沿或下降沿

多用于测量PWM周期/频率,只要测量出连续的两个上升沿或连续的两个下降沿的时间间隔 也可以测量占空比,只要测量出连续的一个上升沿和一个下降沿的时间间隔 ,然后除以周期即可

二,hal配置

软件:vscode keil stm32cubemx

1.选择对应的芯片

2.配置时钟模式


3.配置串口输出 ,打印效果

4.配置通用定时器tim5

配置TIM4

PB6和pb12都是tim4的复用引脚线 我们可以在修改PB6为tim4如下 要查看对应的原理图


修改中断优先级

导出项目工程

配置烧录自动复位重启


添加支持的c语言库文件

三,编写代码

1、重新fput.c 在uart.c里面书写

c 复制代码
#include <stdio.h> // 导入c库文件
int fputc(int ch, FILE *f)
{
  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 1000);
  return ch;
}

2.在stm32f1xx_it.c 里面重新回调中断函数

c 复制代码
uint16_t cycle = 0;
uint8_t intCount = 0;
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
  if(htim->Instance == TIM4 && htim->Channel == TIM_CHANNEL_1)
  {
    intCount++;
    if(intCount == 1)
    {
      // 第一个捕获值(上升沿),清零计数器
      __HAL_TIM_SetCounter(&htim4,0);
    }
    else if(intCount == 2)
    {
      // 第二个捕获值(上升沿),读取CCR的值,交给cycle
      cycle = __HAL_TIM_GetCompare(&htim4, TIM_CHANNEL_1);
      intCount = 0;
    }
  }
}

// 计算PWM周期(单位:ms)
double TIM4_GetPWMCycle(void)
{
  return cycle / 1000.0;
}
// 计算PWM频率(单位:Hz)
double TIM4_GetpwmFreq(void)
{
  return 1000000.0 / cycle;
}

在main里面添加内容

c 复制代码
 HAL_TIM_PWM_Start(&htim5, TIM_CHANNEL_2);
  HAL_TIM_IC_Start_IT(&htim4, TIM_CHANNEL_1);


  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */
    printf("PWM周期:%f ms\n", TIM4_GetPWMCycle());
    printf("PWM频率:%f Hz\n", TIM4_GetpwmFreq());

    HAL_Delay(1000);

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}
相关推荐
LCMICRO-133108477461 天前
长芯微LPS123完全P2P替代ADP123,高性能、低压差的线性稳压器
单片机·嵌入式硬件·fpga开发·硬件工程·dsp开发·线性稳压器
守护安静星空1 天前
esp32开发笔记-工程搭建
笔记·单片机·嵌入式硬件·物联网·visual studio code
时空自由民.1 天前
ST7701S 3.5寸显示屏
单片机
金戈鐡馬1 天前
BetaFlight中的定时器引脚绑定详解
stm32·单片机·嵌入式硬件·无人机
Wave8451 天前
FreeRTOS软件定时器详解
stm32·单片机·freertos
VBsemi-专注于MOSFET研发定制1 天前
奶茶制作机器人功率MOSFET选型方案——高效、精准与可靠驱动系统设计指南
单片机·嵌入式硬件
水云桐程序员1 天前
单片机项目从入门到精通
单片机·嵌入式硬件
Wave8451 天前
STM32 裸机中断与 FreeRTOS 中断管理的四大核心差异
单片机·嵌入式硬件
若忘即安1 天前
【硬件电路设计18】WIFI+BlueTooth
单片机·嵌入式硬件
时空自由民.1 天前
ESP32 JEPEG作用
单片机