HAL库 stm32 输入捕获 关于 计数器溢出 的处理

至于如何配置HAL库的输入捕获,去看大佬的文章
链接: 【STM32】HAL库 STM32CubeMX教程八—定时器输入捕获.

为了更准确的测试捕获时间,我将捕获的端口设在了按键上。
在这里插入图片描述

这篇文章中使用的定时器为32位的,处理的时间位 1/1M 即1us
2^32*1us≈4295s
所以这种情况下,我觉得就没有必要考虑溢出的问题

但是我们现实中肯定不止会遇到这种情况

我所使用的位16位的计数器,一下子就会溢出,导致时间不对。

其实我们只需要在利用这个
定时器中断回调函数就行,只要在捕获的过程中溢出一次,系数就+1
别忘记加定时器中断的开始函数

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	 if(htim == (&htim2))
  {    	
	if(capture_Cnt==2){oflow++;}//capture_Cnt状态机处于捕获状态
	else oflow=0;
  }
}
//——————————————————while中的代码————————————————————————
	high_time = oflow*65536+capture_Buf[1]- capture_Buf[0];   
		printf("%d\r\n",high_time);

最后根据按下的不同的时间,得到不同得到计数值
在这里插入图片描述

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
STM32中,输入捕获是一种用于测量外部信号脉冲宽度或频率的功能。通过输入捕获,可以在特定的跳变沿上锁存计数器的值,并计算出脉冲宽度或频率。在HAL库中,提供了一些函数来实现输入捕获功能。 首先,可以使用以下函数来启动或停止输入捕获功能: - HAL_TIM_IC_Start_IT:以中断方式启动输入捕获功能,并使能相应的中断。 - HAL_TIM_IC_Stop_IT:以中断方式停止输入捕获功能和相应中断。 - HAL_TIM_IC_Start:以轮询方式启动输入捕获功能。 - HAL_TIM_IC_Stop:以轮询方式停止输入捕获功能。 另外,可以使用以下函数来读取捕获值: - HAL_TIM_ReadCapturedValue:读取CCRx寄存器的值,获取当前的捕获值。 在使用输入捕获功能时,需要注意捕获的脉宽时间长度是否超过捕获定时器的周期,如果超过会发生溢出,需要进行额外的处理。 在HAL库中,还提供了一些回调函数来处理定时器溢出和捕获中断: - HAL_TIM_PeriodElapsedCallback:定时器溢出回调函数。 - HAL_TIM_IC_CaptureCallback:捕获中断回调函数。 通过使用这些HAL库函数,可以方便地实现STM32输入捕获功能。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [STM32定时器输入捕获教程(hal库)](https://blog.csdn.net/weixin_46002646/article/details/117003312)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [STM32 HAL库 STM32CubeMX -- TIM(定时器输入捕获)](https://blog.csdn.net/Dir_x/article/details/129006634)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

花椒且喵酱

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

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

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

打赏作者

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

抵扣说明:

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

余额充值