完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我想将“GPS经纬度”信息通过NRF24L01发送到另外一块mini版在通过串口传给电脑。。但是新手,弄了好长时间也没弄对。。这个接收的数据就是不对。。我把代码放上来求助。。
#include "led.h" #include "delay.h" #include "sys.h" #include "usart.h" #include "lcd.h" #include "usart2.h" #include "gps.h" #include "string.h" #include "key.h" #define TX_OK 0x20 //TX发送完成中断 static float m1=0; static float m2=0; u8 USART1_TX_BUF[USART2_MAX_RECV_LEN]; //串口1,发送缓存区 nmea_msg gpsx; //GPS信息 __align(4) u8 dtbuf[50]; //打印缓存器 const u8*fixmode_tbl[4]={"Fail","Fail"," 2D "," 3D "}; //fix mode字符串 //显示GPS定位信息 void Gps_Msg_Show(void) {//下个一个红色大括号表示 Gps_Msg_Show。 float tp; POINT_COLOR=BLUE; tp=gpsx.longitude; sprintf((char *)dtbuf,"Longitude:%.5f %1c ",tp/=100000,gpsx.ewhemi); //得到经度字符串 m1=tp; //printf("%.5frn",tp); LCD_ShowString(30,130,200,16,16,dtbuf); tp=gpsx.latitude; sprintf((char *)dtbuf,"Latitude:%.5f %1c ",tp/=100000,gpsx.nshemi); //得到纬度字符串 m2=tp; //printf("%.5frn",tp); LCD_ShowString(30,150,200,16,16,dtbuf); tp=gpsx.altitude; sprintf((char *)dtbuf,"Altitude:%.1fm ",tp/=10); //得到高度字符串 LCD_ShowString(30,170,200,16,16,dtbuf); tp=gpsx.speed; sprintf((char *)dtbuf,"Speed:%.3fkm/h ",tp/=1000); //得到速度字符串 LCD_ShowString(30,190,200,16,16,dtbuf); if(gpsx.fixmode<=3) //定位状态 { sprintf((char *)dtbuf,"Fix Mode:%s",fixmode_tbl[gpsx.fixmode]); LCD_ShowString(30,210,200,16,16,dtbuf); } sprintf((char *)dtbuf,"Valid satellite:%02d",gpsx.posslnum); //用于定位的卫星数 LCD_ShowString(30,230,200,16,16,dtbuf); sprintf((char *)dtbuf,"Visible satellite:%02d",gpsx.svnum%100); //可见卫星数 LCD_ShowString(30,250,200,16,16,dtbuf); sprintf((char *)dtbuf,"UTC Date:%04d/%02d/%02d ",gpsx.utc.year,gpsx.utc.month,gpsx.utc.date); //显示UTC日期 //printf("year2:%drn",gpsx.utc.year); LCD_ShowString(30,270,200,16,16,dtbuf); sprintf((char *)dtbuf,"UTC Time:%02d:%02d:%02d ",gpsx.utc.hour,gpsx.utc.min,gpsx.utc.sec); //显示UTC时间 LCD_ShowString(30,290,200,16,16,dtbuf); } int main(void) { u16 t=0; u8 tmp_buf[33]; u8 buffer; u16 i,rxlen; u16 lenx; u8 key=0XFF; u8 upload=0; delay_init(); //延时函数初始化 uart_init(38400); //串口初始化为9600 USART2_Init(38400); //初始化串口2 LED_Init(); //初始化与LED连接的硬件接口 KEY_Init(); //初始化与LED连接的硬件接口 LCD_Init(); //初始化LCD NRF24L01_Init(); //初始化NRF24L01 POINT_COLOR=RED; while(NRF24L01_Check())//检测不到24L01 { LCD_ShowString(30,120,200,16,16,"fail..."); delay_ms(500); } TX_Mode(); //这里只做发送。。不接收 if(Ublox_Cfg_Rate(1000,1)!=0) //设置定位信息更新速度为1000ms,顺便判断GPS模块是否在位. { LCD_ShowString(30,120,200,16,16,"NEO-6M Setting..."); while((Ublox_Cfg_Rate(1000,1)!=0)&&key) //持续判断,直到可以检查到NEO-6M,且数据保存成功 { USART2_Init(9600); //初始化串口2波特率为9600(EEPROM没有保存数据的时候,波特率为9600.) Ublox_Cfg_Prt(38400); //重新设置模块的波特率为38400 Ublox_Cfg_Tp(1000000,100000,1); //设置PPS为1秒钟输出1次,脉冲宽度为100ms key=Ublox_Cfg_Cfg_Save(); //保存配置 } LCD_ShowString(30,120,200,16,16,"NEO-6M Set Done!!"); delay_ms(500); LCD_Fill(30,120,30+200,120+16,WHITE);//清除显示 } while(1) { delay_ms(100); if(USART2_RX_STA&0X8000) //接收到一次数据了 { rxlen=USART2_RX_STA&0X7FFF; //得到数据长度 for(i=0;i USART2_RX_STA=0; //启动下一次接收 USART1_TX_BUF=0; //自动添加结束符 GPS_Analysis(&gpsx,(u8*)USART1_TX_BUF);//分析字符串 Gps_Msg_Show(); //显示信? delay_ms(1000); printf("%.5frn",m1); delay_ms(1000); printf("%.5frn",m2); if(upload)printf("rn%srn",USART1_TX_BUF);//发送接收到的数据到串口1 } key=KEY_Scan(0); if(key==KEY0_PRES) { upload=!upload; POINT_COLOR=RED; if(upload)LCD_ShowString(30,100,200,16,16,"NMEA Data Upload:ON "); else LCD_ShowString(30,100,200,16,16,"NMEA Data Upload:OFF"); } if((lenx%500)==0)LED0=!LED0; lenx++; LCD_ShowString(30,20,200,16,16,"24L01 Ready!"); LCD_ShowString(30,40,200,16,16,"NRF24L01 TX_Mode"); tmp_buf[0]=m1;//这里,我觉得问题出在这里。。。,m1=gpsx.longitude; delay_ms(5); if(NRF24L01_TxPacket(tmp_buf)==TX_OK) { LCD_ShowString(60,170,"Sended DATA:"); LCD_ShowString(50,190+key*16,230,16,16,tmp_buf); tmp_buf[32]=0; key++; if(key==6) { key=0; LCD_Fill(0,190,240,320,WHITE);//清空上面的显示 } else { }; delay_ms(1500); } } } |
|
相关推荐
1个回答
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2568 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2363 浏览 5 评论
3209 浏览 3 评论
2836 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2787 浏览 4 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
664浏览 1评论
903浏览 0评论
1024浏览 0评论
667浏览 0评论
497浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 16:18 , Processed in 1.074686 second(s), Total 75, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号