完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
现在我把官方的超声波例程改成了连续测量,每5次取中间值作为高度,然后发现当超声波测量高度不正确的时候,如果把超声波模块取下来,再装上去,数据就又正常了,有没有遇到同样情况的同学?
|
|
相关推荐
6个回答
|
|
刚仔细看了一下你的源码,可以试试把index放在中断函数里面置零,删掉stop。
同时由于flag在测量的时候一直在加,用的时候flag可能会出现越界的现象,注意清零,或者调整根绝测量原理代码结构。
最佳答案
|
|
|
|
不是连线的问题,不接超声波,高度不会更新,
|
|
|
|
你的连续测量是怎么操作的?
R_MTU3_C5_Start(); Start_Measure();// take measure five times and save the distance every time. while(stop != 1); R_MTU3_C5_Stop(); 这几个函数连续调用5次? flag清零了么? 还有个问题需要确认一下,超声波测量高度不正确发生的几率?几次出现一次?还是几次后就一直不正确了? |
|
|
|
blnocyyp2002 发表于 2018-7-23 03:04 R_CMT0_Start(); Start_Measure(); while(1U) { if(fly>=0&&fly<=18) //定时器前15s { while(stop != 1); if(stop==1U) { stop=0U; index=0U; } } else if(fly>18) { R_CMT0_Stop(); //定时器 R_MTU3_C5_Stop(); } } 上面是main里面的函数 下面是mtu5中断里面的函数 static void r_mtu3_tgiu5_interrupt(void) { /* Start user code. Do not edit comment generated here */ flag++; if(flag%2==1U) { return; } count[index]=MTU5.TGRU; result[index]=Get_Distance(count[index]); index++; if(index >=5) { stop = 1U; middle_value=Get_middle(); Start_Measure(); //这句官方没有 return; } Start_Measure(); /* End user code. Do not edit comment generated here */ } |
|
|
|
我mtu5开启和关闭只调用了一次,flag为什么要清零?不是flag%2吗,清不清零没问题吧 |
|
|
|
blnocyyp2002 发表于 2018-7-23 03:04 我mtu5开启和关闭只调用了一次,flag为什么要清零?不是flag%2吗,清不清零没问题吧 |
|
|
|
只有小组成员才能发言,加入小组>>
请问一个迭代法图形二值化的程序代码把宽改成240之后整个屏幕不显示是什么原因?
2674 浏览 0 评论
2666 浏览 1 评论
1903 浏览 1 评论
2057 浏览 2 评论
2621 浏览 2 评论
734浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 15:37 , Processed in 1.889029 second(s), Total 88, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号