stm32的输入捕获实验程序问题(测量脉冲宽度)

stm32的输入捕获实验程序问题(测量脉冲宽度),第1张

1、脉冲宽度

如下图所示,采集该高电平脉冲的宽度,只需要进入输入捕获上升沿检测,记录当前的发生上升沿时的CNT值,再进行输入捕获下降沿检测,也记录当前发生下降沿时的CNT值,两次CNT值的差值再根据计数培备启的频率就可以算出脉冲的宽度。

上升沿及下降沿捕获的程序具体实现如下:

TIM8_Cap_Init(0XFFFF,72-1) //以1Mhz的频率计数配如

void TIM8_UP_IRQHandler(void)

{

if((TIM8CH4_CAPTURE_STA&0X80)==0) //还未成功捕获

{

if (TIM_GetITStatus(TIM8,TIM_IT_Update) != RESET)

{

if(TIM8CH4_CAPTURE_STA&0X40) //已经捕获到高电平了

{

if((TIM8CH4_CAPTURE_STA&0X3F)==0X3F) //高电平太长了

{

TIM8CH4_CAPTURE_STA"=0X80 //标记成功捕获滚如了一次

TIM8CH4_CAPTURE_VAL=0XFFFF

}

else

TIM8CH4_CAPTURE_STA++ //捕获高电平后定时器溢出的次数++

}

}

}

TIM_ClearITPendingBit(TIM8,TIM_IT_Update) //清除中断标志位

}

void TIM8_CC_IRQHandler(void)

{

if((TIM8CH4_CAPTURE_STA&0X80)==0)

{

if(TIM_GetITStatus(TIM8,TIM_IT_CC4) != RESET) //捕获1发生捕

代号 M8170

名称 X0 脉冲捕获

内容 ON: X0 脉冲捕获

详细说明闹虚

当接收到从范围X0至X5的输入脉冲前沿时, 相关的M设备被设置为ON.

在用户程序中复位该设备后, 下一次脉冲到来扮型时又设置该M线厅弯猜圈为ON.

这样, 快速输入脉冲就被捕获并储存. 该 *** 作需要 EI(FNC04)指令有效.

适用的CPU FX0,FX0S,FX0N,FX1除外


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12404570.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存