如题,我将TIM2、TIM5都设置为输入捕获(TIM5就是按照原子哥实验的那个例程,一模一样的代码),然后TIM2和TIM5好像也都一样。所以我也是基本拷贝的。用的引脚是:TIM5CH1--PA0,TIM2CH1--PA5
唯一不同的是在TIM2捕获到上升沿时的中断处理函数里去读TIM5->CCR1的值。因为我想TIM5->CCR1清零的时候是TIM5捕获到PA0输入信号的上升沿,TIM2中断也是捕获到PA5输入信号的上升沿,都是上升沿,相差之值就是时间差,时间差/周期*360就是相位差了。
实际结果是1000Hz的方波输入,TIM5、TIM2都能单独测出其周期,TIM5下降沿中断时去读TIM5->CCR1的值大概是500,但是TIM2上升沿中断时去读竟然是895391,十万数量级的。。。完全不知道什么情况
按照1MHz的初始化频率,895391完全没有可能出现啊。
不知道这是为什么,是只有中断时才能读CCR1?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
哈哈哈哈
好的,谢谢你的解答。我的情况和你不一样,每次读取都是在中断之后,此时CCR1已经有了CNT的值。我碰到的问题是:在算频率,a1=第一次捕获值时间,a2=某次捕获时间,频率=pclk/(a2-a1)*(捕获次数-1),时间差里已经算进了捕获时的溢出次数,所以肯定不会有问题。PCLK为晶振值=1000000。碰到的情况是:经常不经意的频率会变成1000多甚至更大,最常出现3906.25HZ这个值。实际情况只有2、3这样。一般这个计算公式,每3次捕获我就会刷新重新第一个开始,所以捕获次数=3,(a2-a1)=512.最后算出来这个512到底有什么含义?是哪里溢出的关系吗?
一周热门 更多>