本帖最后由 FAQ 于 2014-3-1 10:29 编辑
定时器捕获信号测频率
固件库里面的例子是这样处理捕获的结果的。
/* Capture computation */
if (IC3ReadValue2 > IC3ReadValue1)
{
Capture = (IC3ReadValue2 - IC3ReadValue1); //两次捕获期间定时器没有溢出
}
else
{
Capture = ((0xFFFF - IC3ReadValue1) + IC3ReadValue2); //两次捕获期间定时器溢出一次
}
如果捕获溢定时器计时溢出了一次的话,Capture = ((0xFFFF - IC3ReadValue1) + IC3ReadValue2);这样做就可以了,但是如果两次捕获间隔时间很长,定时器溢出不止一次呢。怎么知道两次捕获这期间定时器到底计时了多少呢。有对应的标志位么,比如捕获溢出一次来一个标志位,不知道有没有这个功能。
|