我想通过在每一次的外部中断(双边沿触发)中记录TIM的计数值然后清零计数值的方法,来获得两次边沿中断的时间差并以此计算脉冲宽度和波特率。但是实测时发现偶尔会有两次中断的时间间隔极小(正常是1250的时候有时候会产生三四百甚至一两百的数值)。请问这是为什么?
热门产品 :
CH592: RISC-V内核BLE5.4无线MCU
我想通过在每一次的外部中断(双边沿触发)中记录TIM的计数值然后清零计数值的方法,来获得两次边沿中断的时间差并以此计算脉冲宽度和波特率。但是实测时发现偶尔会有两次中断的时间间隔极小(正常是1250的时候有时候会产生三四百甚至一两百的数值)。请问这是为什么?
按理说应该每一个数据都应该是12xx的整数倍才对,但是产生了部分很小的数据。
应该就是误触发,但是始终无法根绝。
您好,该问题可从信号源(可具体查看一下信号源波形)、程序处理(高低电平与脉宽判断)、外部干扰3个方面去考虑一下问题。此处若要计算波形的脉宽等,建议你用PWM输入模式或输入捕获模式,相对于你这种外部中断的方式更好一些,程序也简单。在CH32V203 EVT中也有对应的例程,你可以参考一下。下面链接为CH32V203 EVT下载链接:
/downloads/CH32V20xEVT_ZIP.html