STM32
直播中

早知

9年用户 1133经验值
擅长:光电显示 存储技术
私信 关注
[问答]

用STM32F1xxx来同时对TIMR4的两个输入脉冲进行脉宽测量,脉冲要如何计算?

我用STM32F1xxx来同时对tiMR4的两个输入脉冲进行脉宽测量,我的脉宽测量思路为两次上升沿的捕捉值相减,但现如下问题不解,假如前一个上升沿脉冲时CNT内的值为0xFFFC,那么下一个上升沿时CNT的值发生了溢出又从0开始了,比如第二次捕捉到的CNT中的值为0x0A,那请问这个问题要怎么解决咧,不可能用第二次的值去减第一次捕捉到的值,那这个脉冲要如何计算咧???请各位用过的指教?

回帖(1)

那年我十七_

2024-5-15 16:42:56
在STM32F1系列中,要同时对TIM4的两个输入脉冲进行脉宽测量,可以采用以下方法解决您提到的问题:

1. 首先,确保TIM4的时钟源和预分频器设置正确,以便在测量过程中获得准确的计数。

2. 使用两个输入捕获通道(例如,IC1和IC2)来分别捕获两个输入脉冲的上升沿。

3. 在每次捕获中断中,检查捕获到的上升沿是来自哪个通道(IC1或IC2),并记录下此时的计数器(CNT)值。

4. 当捕获到第二个上升沿时,检查CNT值是否小于第一个上升沿的CNT值。如果是,说明发生了溢出,需要进行特殊处理。

5. 如果发生了溢出,可以通过以下公式计算脉宽:
   脉宽 = (0xFFFF - 第一个上升沿的CNT值) + 第二个上升沿的CNT值

6. 如果没有发生溢出,可以直接用第二个上升沿的CNT值减去第一个上升沿的CNT值来计算脉宽。

7. 在计算出脉宽后,根据需要对结果进行处理,例如转换为实际的时间单位(如微秒、毫秒等)。

通过以上步骤,即使在计数器溢出的情况下,也可以准确地计算出两个输入脉冲之间的脉宽。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分