真是个难忘的一个晚上,事情经过:
之前已经二开完成一部分匿名飞控自主飞行和遥控To程控飞行。
今晚上准备二开匿名飞控由openmv巡色块循迹,首先需要通信成功,对吧。
在暑假电赛之前,我与班里同学就已做出了MV方与32方数据的通信与错误校正。
然后今晚上任务是把32的代码直接移植到匿名飞控上和写出追踪代码然后明天试飞,多简单一件事情。
结果光移植那小几十行代码足足废了5个小时(死鱼脸):
先移植到USART3,一切准备就绪。结果通信失败。-----我又在中断服务函数入口加了一个变量自加,以判断程序指针到底有没有进中断服务函数。结果是有的。但服务函数里面的数据解算硬是不执行!然后又拿仿真器设断点、单步运行。发现一些应该拉高的标志位硬是没拉高。找了半天毛病还是不见效,NN个腿,气得要死(不知道大家有没有:明明理论就是这样没错,而且程序一个字母一个字母的扣,也没错。但他就是结果不对!。。。这种我是经常遇见,但今天这种真的又把我气坏了)。
![6a1bbb1b2910b9a9f1ff493e0c2f9b98.png](https://i-blog.csdnimg.cn/blog_migrate/f3ecb4be3822da7be3b7b380a249208b.png)
上图ACC-X和ACC-Y原显示加速度计数据。现被我修改为显示:飞控接收到OPENMV发来的目标的X、Y坐标。即ACC-X=目标X坐标。ACC-Y=目标Y坐标。