⑥【蓝桥杯】STM32G4嵌入式竞赛实训平台(CT117E-M4)学习——输入捕获

写在前面——

        本文将介绍嵌入式竞赛实训平台(CT117E-M4)开发板上利用输入捕获测频率。

目录

一、硬件平台

二、软件平台

三、频率发生器原理图

四、配置过程

五、编写程序

六、总结


一、硬件平台

嵌入式竞赛实训平台(CT117E-M4)是北京国信长天科技有限公司设计、生产的一款“蓝桥杯全国软件与信息技术专业人才大赛–嵌入式设计与开发科目”专用竞赛平台,平台以STM32G431RBT6为主控芯片,预留扩展板接口,可为用户提供丰富的实验场景。

CT117E-M4产片图片

二、软件平台

KEIL5,STM32CubeMX 

三、频率发生器原理图

 从上图我们可以看到频率发生器分别连接了PA15与PB4,通过在CubeMX中点击引脚可查看到,可以得知这两个引脚可用作以下定时器的输入捕获:

PA15  --> TIM2_CH1(AF1)

PB4   --> TIM3_CH1(AF2)

四、配置过程

 

1.这里我们选择TIM2的通道1

  • 预分频系数为79   计数时钟频率就是 80MHz/(79+1) = 1MHz        此时1us计数一次
  • 自动加载值设置为32bit最大值  0xFFFFFFFF         
  • 上升沿捕获
  • 不分频
  • 滤波值为8
  • 同时在NVIC一栏使能TIM2的中断 

五、编写程序

1.定义变量

/* USER CODE BEGIN 0 */
    uint32_t capture_Buf[3] = {0};   //存放计数值
    uint8_t capture_Cnt = 0;    //状态标志位
    uint32_t high_time;   //高电平时间
/* USER CODE END 0 */

2.在 while(1)中的用户代码区 3,写入TIM2 CH1通道的输入捕获控制和数据处理 

while (1)
{
    /* USER CODE END WHILE */
 
    /* USER CODE BEGIN 3 */
  switch (capture_Cnt){
	case 0:
		capture_Cnt++;
		__HAL_TIM_SET_CAPTUREPOLARITY(&htim5, TIM_CHANNEL_1, TIM_INPUTCHANNELPOLARITY_RISING);
		HAL_TIM_IC_Start_IT(&htim5, TIM_CHANNEL_1);	//启动输入捕获       或者: __HAL_TIM_ENABLE(&htim5);
		break;
	case 3:
		high_time = capture_Buf[1]- capture_Buf[0];    //高电平时间
		HAL_UART_Transmit(&huart1, (uint8_t *)high_time, 1, 0xffff);   //发送高电平时间
				
				
		HAL_Delay(1000);   //延时1S
		capture_Cnt = 0;  //清空标志位
		break;
				
	}
}
/* USER CODE END 3 */

3.在main函数下方添加中断回调函数

/* USER CODE BEGIN 4 */
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
	
	if(TIM5 == htim->Instance)
	{
		switch(capture_Cnt){
			case 1:
				capture_Buf[0] = HAL_TIM_ReadCapturedValue(&htim5,TIM_CHANNEL_1);//获取当前的捕获值.
				__HAL_TIM_SET_CAPTUREPOLARITY(&htim5,TIM_CHANNEL_1,TIM_ICPOLARITY_FALLING);  //设置为下降沿捕获
				capture_Cnt++;
				break;
			case 2:
				capture_Buf[1] = HAL_TIM_ReadCapturedValue(&htim5,TIM_CHANNEL_1);//获取当前的捕获值.
				HAL_TIM_IC_Stop_IT(&htim5,TIM_CHANNEL_1); //停止捕获   或者: __HAL_TIM_DISABLE(&htim5);
				capture_Cnt++;    
		}
	
	}
	
}
/* USER CODE END 4 */

基本操作步骤: 

  • 设置TIM5 CH1为输入捕获功能;  
  • 设置上升沿捕获; 
  • 使能TIM2 CH1捕获功能;  
  • 捕获到上升沿后,定时器当前计数值存入capture_buf[0],改为捕获下降沿;   
  • 捕获到下降沿后,定时器当前计数值存入存入capture_buf[1],关闭TIM2 CH1捕获功能capture_Cnt=3;
  • 高电平时间: capture_buf[1] - capture_buf[0]        发送到上位机  重新启动输入捕获

六、总结

输入捕获就到这里了~如果此文章对你有帮助,欢迎点赞 关注 收藏 转发 

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_Cui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值