【国信长天蓝桥杯】③ STM32G431 TIM输入捕获,定时器输入捕获频率测量使用步骤

摘要

本文章基于国信长天M4开发板,讲述了STM32G4 定时器TIM输入捕获频率测量的应用,祝各位学生蓝桥杯比赛取得好成绩!
国信长天开发板

M4开发板 频率发生器部分原理图

在这里插入图片描述

由上图可以看出,开发板上配置了两个555作为频率发生器,通过可调电阻R39,R40可调节输出频率,两个输出引脚分别连接在PA15和PB4引脚上。查阅芯片资料,可以得知这两个引脚可用作以下定时器的输入捕获:

PA15  --> TIM2_CH1(AF1)

PB4   --> TIM3_CH1(AF2)

TIM 输入捕获 使用步骤

下文将以赛方提供的示例代码HAL_06_LCD为基础,为大家讲解ADC的使用步骤,赛方提供的示例代码可以加入我们的备赛交流QQ群(482754201),在群里下载:

在这里插入图片描述

① 将 PA15PB4初始化为定时器输入通道模式

双击工程目录下的HAL_06_LCD.ioc,使用STM32CubeMX软件打开工程配置。

在这里插入图片描述

点击PA15PB4,分别将其设为TIM2_CH1TIM3_CH1。并且点击左边的Timer,将TIM2Channel 1设为Input Capture direct mode,下面的Parameter Setting中将Prescaler设为79Counter Period设为65535
在这里插入图片描述

然后点击NVIC Setting,选中下图所示的复选框:
在这里插入图片描述
如果要使用PB4引脚进行输入捕获,那么TIM3也要进行上图所示的设置,设置完成后点击右上角的GENERATE CODE生成代码。

② 启动定时器中断

使用Keil打开刚刚生成的代码,打开main.c文件,找到MX_TIM2_Init()函数,在该函数末尾处/* USER CODE BEGIN TIM2_Init 2 */ /* USER CODE END TIM2_Init 2 */之间添加如下代码,用来启动定时器2通道1的输入捕获。

HAL_TIM_IC_Start_IT(&htim2, TIM_CHANNEL_1);

如果在代码中使用的定时器3,那么同样也需要在MX_TIM3_Init()中添加类似代码。

③ 编写定时器中断函数

使用Keil打开刚刚生成的代码,将下列代码粘贴到main.c/* USER CODE BEGIN 0 */ /* USER CODE END 0 */之间。


uint32_t  f39 = 0, f40 = 0; //分别用来存储TIM2_CH1和TIM3_CH1的捕获频率
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
	uint32_t  cc1_value = 0;
	cc1_value = __HAL_TIM_GET_COUNTER(htim);
	__HAL_TIM_SetCounter(htim,0);
	
	if(htim == &htim2) //定时器2,对应的是PA15引脚,R40
	{
		f40 = 1000000/cc1_value;
	}
	
	if(htim == &htim3) //定时器3,对应的是PB4引脚,R39
	{
		f39 = 1000000/cc1_value;
	}
}

上述代码同学们需要牢记,甚至背诵

④ 获取捕获的频率

main()while()中插入如下代码:

	char buf[64] = {0};
	
	sprintf(buf , "TIM2(R40): %d Hz   ", f40);
	LCD_DisplayStringLine(Line8, (uint8_t *)buf);
	
	sprintf(buf , "TIM3(R39): %dHz    ", f39);
	LCD_DisplayStringLine(Line9, (uint8_t *)buf);
	
	HAL_Delay(100);

在这里插入图片描述

⑤ 运行效果图

在这里插入图片描述

总结

TIM 定时器输入捕获 使用步骤总结如下:

  1. 配置引脚PA15 PB4微定时器模式,并配置定时器参数
  2. 编写定时器中断函数,用于计算输入捕获的频率
  3. 捕获的频率值存放在变量 f39f40

如果此文章对你有帮助,欢迎点赞 关注 收藏 转发.

学习过程中遇到问题可以在评论区留言,或者加入我们的QQ群(482754201),在群里讨论。

在这里插入图片描述

  • 15
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值