完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 爱在南方 于 2017-5-7 13:09 编辑
串口打印不出来,好心塞呀。我用keil调试,程序运行结果是可以的,但是用串口打印结果时,却一直给我打印出nan,有木有人遇过类似情况,可否指点一下,不甚感激呀。。。 以下是我写的GPS模块采点程序,求指点 void Data_gather(void) { unsigned char i=0,j=0,k=0; float longtitude_sum=0,latitude_sum=0; float S_lon=0,S_la=0,Sum_lon=0,Sum_la=0; float longtitude_aver=0,latitude_aver=0; //取均值 flag_ok=0; if(Save_Data.isParseData==true&&Save_Data.isUsefull==true) { //考虑到测一点时,度是不会变的,所以只对分计算 //先采集 longtitude[pos_collect]=(Save_Data.longitude[3]-0x30)*10+(Save_Data.longitude[4]-0x30)*1+(Save_Data.longitude[6]-0x30)*0.1+(Save_Data.longitude[7]-0x30)*0.01+(Save_Data.longitude[8]-0x30)*0.001+(Save_Data.longitude[9]-0x30)*0.0001; latitude[pos_collect]=(Save_Data.latitude[2]-0x30)*10+(Save_Data.latitude[3]-0x30)+(Save_Data.latitude[5]-0x30)*0.1+(Save_Data.latitude[6]-0x30)*0.01+(Save_Data.latitude[7]-0x30)*0.001+(Save_Data.latitude[8]-0x30)*0.0001+0.0000000; pos_collect++; if(pos_collect>199) //采集完成,滤波,拉伊达准则 { pos_collect=0; //求均值 for(i=0;i<200;i++) { longtitude_sum+=longtitude; latitude_sum+=latitude; } longtitude_aver=longtitude_sum/200; latitude_aver=latitude_sum/200; //求方差S for(i=0;i<200;i++) { Sum_lon+=(longtitude-longtitude_aver)*(longtitude-longtitude_aver); Sum_la+=(latitude-latitude_aver)*(latitude-latitude_aver); } Sum_lon=Sum_lon/199; Sum_la=Sum_la/199; S_lon=sqrt(Sum_lon); S_la=sqrt(Sum_la); //判断数据是否异常 for(i=0;i<200;i++) { if(longtitude>3*S_lon) { longtitude=0; } if(latitude>3*S_la) { latitude=0; } } //处理完毕,求均值 longtitude_sum=0; latitude_sum=0; for(i=0;i<200;i++) { if(longtitude!=0) { j++; longtitude=(int)(longtitude*10000);//扩大10000倍,取整减小误差 longtitude_sum+=longtitude; } if(latitude!=0) { k++; latitude=(int)(latitude*10000);//扩大10000倍,取整减小误差 latitude_sum+=latitude; } } longtitude_aver=longtitude_sum/(j*10000); latitude_aver=latitude_sum/(k*10000); //存入数组 Pos_longtitude[num_postion]=longtitude_aver; Pos_latitude[num_postion]=latitude_aver; printf("jingdu=%f",Pos_longtitude[num_postion]); printf("rn"); printf("weidu=%f",Pos_longtitude[num_postion]); printf("rn"); //串口打印 num_postion=num_postion+1; flag_ok=1; } } } |
|
相关推荐
2个回答
|
|
问题解决了,nan表示的是not a number,因为我在程序里面除了一个0,所以导致了这种情况的出现
|
|
|
|
是不是波特率不对呀,或者没接地
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
579 浏览 1 评论
794 浏览 0 评论
MCU友好过渡MPU,米尔基于STM32MP135开发板裸机开发应用笔记
614 浏览 0 评论
自定义系统时钟频率后,用库函数和微带两种方式点亮LED灯,为什么灯的闪烁频率不一致?
1413 浏览 2 评论
1634 浏览 2 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-19 11:54 , Processed in 0.429062 second(s), Total 40, Slave 35 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号