STM32 同个定时器 采用2个通道输入捕获
工作中遇到,做点总结:
之前看,找到一种写法 就是 把中断中的 CAPTURE_VAL 的值 变成 date1 date2 去保存
但是我的写法不成功,一位大佬帮忙改成功了。
总结我的写法错误之处,
主函数区别:
我把date1 清0 放后面了
中断函数区别:
我调用了
TIM_GetCapture1 这个函数
但是原理是一样的 都是返回TIMx->CCR1
大佬的写法:
主函数
中断函数:
总结:
1.应该就是主函数date1的清0 我位置放太后,导致它没有及时清零,产生误差。因为date1 是开始时CNT计数器的计数值。如果不及时清0,会使得一开始的捕获输入不准确。
2.我可能调用
TIM_GetCapture1
这个函数时,它没有调用成功,不如大佬那种写法,直接操作寄存器来得准确+方便。
注:date1---->同一通道开始时的CNT计数值
date2------>同一通道结束时的CNT计数值
各个通道都有自己的date1 date2 所以每个通道的date1清0 互不影响。 解决了一个CNT共用时,清0混乱的问题。
上一篇:
JS实现多线程数据分片下载