通用定时器 输入捕获 +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 */
}
相关推荐
零一iTEM1 小时前
MAX98357A_音频输出测试
单片机·嵌入式硬件·开源·音视频·硬件工程
逐步前行1 小时前
STM32_标准库结构
stm32·单片机·嵌入式硬件
Hello_Embed1 小时前
libmodbus STM32 主机实验(USB 串口版)
笔记·stm32·学习·嵌入式·freertos·modbus
不做无法实现的梦~2 小时前
PX4各个模块的作用(3)
linux·stm32·嵌入式硬件·机器人·自动驾驶
清风6666662 小时前
基于单片机的喷漆机器人自动控制系统
单片机·嵌入式硬件·机器人·毕业设计·课程设计·期末大作业
不能跑的代码不是好代码2 小时前
STM32独立看门狗(IWDG)知识点及标准库使用指南
stm32·嵌入式硬件
程序员良许2 小时前
嵌入式处理器架构
后端·单片机·嵌入式
来自晴朗的明天2 小时前
15、隔离 DC-DC 电源电路(18S12 模块)
单片机·嵌入式硬件·硬件工程
我送炭你添花2 小时前
电子世界的奇妙冒险:从一个电阻开始(系列目录)
人工智能·单片机·嵌入式硬件·fpga开发
国科安芯3 小时前
火箭传感器控制单元的抗辐照MCU选型与环境适应性验证
单片机·嵌入式硬件·架构·risc-v·安全性测试