STM32的单时钟多通道输入捕获的尝试

本文介绍了STM32利用单个时钟源进行多通道输入捕获的方法,包括单通道单输入、双通道单信号(测PWM占空比)、双通道双信号以及多通道多信号的尝试。在实践中,作者面临计数器计数紊乱的问题,提出了时分复用的思想,以减少IO口的使用。
摘要由CSDN通过智能技术生成

单时钟多通道输入捕获

背景:用3个超声波模块同时进行测距,计划通过输入捕获来实现。查找资料发现他人做的多通道输入捕获,不过以看到的好像都是信号单输入的,对同一个信号(PWM)进行上升沿、下降沿的捕获。但是我想实现一个定时器的多个通道对多个输入信号进行捕获,对多个方面都做了一点尝试,但是还是未能成功。写一篇记录一下,若是以后有机会完善再在后面加上。

0、单通道单输入信号捕获

代码重点是输入捕获的中断逻辑函数。下面是最简单的单通道对单个信号进行捕获(捕获PWM波的高电平的时长),整个逻辑为:
①捕获初始设置为上升沿触发
②捕获到上升沿,进入中断函数
③判断发生上升沿捕获,使能定时器,开始计数
④同时将捕获设置为下降沿触发
⑤捕获到下降沿,再次进入中断函数
⑥判断发生下降沿捕获,关闭定时器,并读取当前定时器的值
注:本中断函数还包括定时器的溢出中断

//中断服务程序	 
void TIM5_IRQHandler(void)
{
    		    
 	if((TIM5CH3_CAPTURE_STA&0X80)==0)//还未成功捕获	
	{
   
		if(TIM_GetITStatus(TIM5, TIM_IT_Update) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值