问题:在编写程序时,将ADC的采集置于定时器TIM0中断里进行,采集完成的8路数据在主函数里分别赋值给各个通道,发现一个问题,转换后的数据偶数个是正确数据,奇数个异常。
怀疑:
(1)是否ADC片子通道配置有误。但细找了代码后发现没有问题;
(2)怀疑是各个通道之间互相干扰导致,此问题无法解决,只能换芯片,在评估板上用同样的程序烧写,发现也出现同样的问题;
(3)怀疑定位到计数变量上,因为8个通道的数据在示波器中显示并没有出现任何的跳变,并且也不可能存在如此规则的奇偶跳变。
解决:
最后发现在定时器TIM0中断里已经counter1ms++,在主函数里又存在一个counter1ms++的语句,造成重复加了两次,删除其中的一个自加1语句,程序恢复正常。
错误犯得很没有水平,找问题排除问题的过程,花费了不少精力,细心排查相信科学,耐下心来很重要!