刚刚出差回来,对我遇到的这个问题总结一下:
我想我这个问题特殊地方,就是不要求定时器连续测量,而是收到触发信号之后开始测量,没有触发信号停止测量。这样一来定时器就不能简单只在初始化配置一下就完了,否则上电后第一次测量没问题,后面的测量头几个数值可能就会出问题。
一开始我是在收到触发信号之后配置定时器,TIM ENABLE,然后结束测量时TIM DISABLE,下次测量时再重新配置再TIM ENABLE。这样一开始在我调程序的板子上使用没啥问题,但是在那块装到控制柜的板子上发现二次测量时第一个值总是错成一个固定值(就是我开贴时提出的问题)。后来听取楼下人的意见,改在上电初始化是配置定时器,测量时只允许中断,结束时中断禁止。这样二次测量时虽然不在出现固定错误值,但是有时会出现测量比实际多出一个值(这个是我在第一页末提的问题)。现在我的解决办法是在每次测量结束和下次测量开始分别用TIM_GetCapture1/2/3/4读取定时器的各个捕获值,再用TIM_ClearFlag清除CC2/CC3待处理标志位,目前即使是控制柜里的板子也还没出现过问题。这样做肯定是有多余的地方,只是我不确定是哪块,所以保险起见就都加上了。
我遇到的就是这个问题,希望对其他有类似需求的朋友有帮助,也希望版主能有更权威的解释和处理方案。
——菜鸟敬上:loveliness: |