久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4071|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

STM32雙串口+MD2503S GPS讀取代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
雙串口+GPS讀取代碼



單片機(jī)源程序如下:
  1. #include "sys.h"
  2. #include "usart.h"               
  3. #include "usart2.h"               
  4. #include "delay.h"       
  5. #include "led.h"                      
  6. #include "key.h"                  
  7. #include "exti.h"                  
  8. #include "wdg.h"          
  9. #include "timer.h"                           
  10.                   
  11. #include "string.h"       
  12. #include "gps.h"        

  13. #include "md2503s.h"


  14. u8 USART1_TX_BUF[USART2_MAX_RECV_LEN];                                                                 //串口1,發(fā)送緩存區(qū)
  15. nmea_msg gpsx;                                                                                                                 //GPS信息
  16. __align(4) u8 dtbuf[64];                                                                                           //打印緩存器
  17. const char *fixmode_tbl[4]={"Fail","Fail"," 2D "," 3D "};                        //fix mode字符串

  18. //顯示GPS定位信息
  19. void Gps_Msg_Show(void);
  20.           

  21. int main(void)
  22. {       
  23.         u16 i,rxlen;
  24.         u16 lenx;
  25.        
  26.         Stm32_Clock_Init(9);                                                        //系統(tǒng)時(shí)鐘設(shè)置
  27.         delay_init(72);                                                                        //延時(shí)初始化
  28.         uart_init(72, 115200);                                                         //串口1初始化為115200
  29.         USART2_Init(36, 115200);                                                //串口2初始化為115200
  30.         LED_Init();                                                                                //初始化與LED連接的硬件接口,其中MD2503S模塊PWRKEY開機(jī)GPIO的初始化
  31.          
  32.         //先關(guān)閉GPS
  33.         MD2503S_close_GPS();
  34.        
  35.         //啟動(dòng)MD2503S模塊
  36.         MD2503S_poweron();       
  37.        
  38.         //=============================查詢模塊的基本信息==============================
  39.         #if 1
  40.         //先關(guān)閉GPS
  41.         MD2503S_close_GPS();
  42.        
  43.         //再查詢版本號(hào)
  44.         MD2503S_print_version();

  45.         //再查詢CSQ
  46.         MD2503S_print_CSQ();
  47.        
  48. #if 0       
  49.         //設(shè)置IMEI號(hào)
  50.         MD2503S_set_IMEI("863851234568714");
  51. #endif       
  52.        
  53.         //查詢IMEI號(hào)
  54.         MD2503S_print_IMEI();
  55.        
  56.         #endif
  57.        
  58.        
  59.         //開啟GPS搜星
  60.         MD2503S_open_GPS();
  61.        
  62.         //======================切換定位方式================================
  63.         #if 1
  64.         delay_ms(1000);
  65.        
  66.         /*
  67.         enum GNSS_strategy
  68.         {
  69.                 GNSS_GPS,
  70.                 GNSS_GLONASS,
  71.                 GNSS_BEIDOU,
  72.                 GNSS_GPS_BEIDOU,
  73.                 GNSS_GPS_GLONASS,
  74.                 GNSS_GPS_BEIDOU_GLONASS,
  75.         };
  76.         */
  77.         MD2503S_set_GNSS_strategy(GNSS_GPS_BEIDOU);
  78.        
  79.        
  80.         #endif
  81.        
  82.         while(1)
  83.         {               
  84.                 delay_ms(10);
  85.                 if(is_uart2_recv_data())                                                                                //接收到一次數(shù)據(jù)了
  86.                 {
  87.                         rxlen = uart2_recv_datalen();                                                                //得到數(shù)據(jù)長(zhǎng)度
  88.                        
  89.                         for(i=0;i<rxlen;i++)
  90.                         USART1_TX_BUF[i] = USART2_RX_BUF[i];          
  91.                        
  92.                         uart2_start_recv();                                                                                           //啟動(dòng)下一次接收
  93.                        
  94.                         USART1_TX_BUF[i] = 0;                                                                                //自動(dòng)添加結(jié)束符
  95.                        
  96.                         GPS_Analysis(&gpsx,(u8 *)USART1_TX_BUF);                                        //分析字符串
  97.                         Gps_Msg_Show();                                                                                                //顯示信息
  98.                        
  99.                         //DEBUG("\r\n%s\r\n",USART1_TX_BUF);                                                //發(fā)送接收到的數(shù)據(jù)到串口1
  100.                 }
  101.        
  102.                 if((lenx%500)==0)LED1=!LED1;                                              
  103.                 lenx++;       
  104.         }                                                                                            
  105. }       


  106. //顯示GPS定位信息
  107. void Gps_Msg_Show(void)
  108. {
  109.         float tp;                  

  110.         tp=gpsx.longitude;          
  111.         sprintf((char *)dtbuf,"Longitude:%.5f %1c  ",tp/=100000,gpsx.ewhemi);        //得到經(jīng)度字符串       
  112.         DEBUG("%s", dtbuf);                  
  113.        
  114.         tp=gpsx.latitude;          
  115.         sprintf((char *)dtbuf,"Latitude:%.5f %1c  ",tp/=100000,gpsx.nshemi);        //得到緯度字符串       
  116.         DEBUG("%s", dtbuf);                  
  117.        
  118.         tp=gpsx.altitude;          
  119.         sprintf((char *)dtbuf,"Altitude:%.1fm  ",tp/=10);                                    //得到高度字符串       
  120.         DEBUG("%s", dtbuf);                  

  121.        
  122.         tp=gpsx.speed;          
  123.         sprintf((char *)dtbuf,"Speed:%.3fkm/h  ",tp/=1000);                                    //得到速度字符串       
  124.         DEBUG("%s", dtbuf);                  
  125.        
  126.         if(gpsx.fixmode <= 3)                                                                                                        //定位狀態(tài)
  127.         {  
  128.                 sprintf((char *)dtbuf,"Fix Mode:%s  ",fixmode_tbl[gpsx.fixmode]);       
  129.                 DEBUG("%s", dtbuf);                  
  130.         }                   
  131.        
  132.         sprintf((char *)dtbuf,"Valid satellite:%02d  ",gpsx.posslnum);                         //用于定位的衛(wèi)星數(shù)
  133.         DEBUG("%s", dtbuf);                  
  134.        
  135.         sprintf((char *)dtbuf,"Visible satellite:%02d  ",gpsx.svnum%100);                         //可見衛(wèi)星數(shù)
  136.         DEBUG("%s", dtbuf);                  
  137.        
  138.         sprintf((char *)dtbuf,"UTC Date:%04d/%02d/%02d  ",gpsx.utc.year,gpsx.utc.month,gpsx.utc.date);        //顯示UTC日期
  139.         DEBUG("%s", dtbuf);                  
  140.        
  141.         sprintf((char *)dtbuf,"UTC Time:%02d:%02d:%02d  ",gpsx.utc.hour,gpsx.utc.min,gpsx.utc.sec);        //顯示UTC時(shí)間
  142.         DEBUG("%s", dtbuf);       
  143.         DEBUG("\r\n\r\n");       
  144. }         


  145. ……………………

  146. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
04.雙串口 GPS讀取.zip (545.74 KB, 下載次數(shù): 49)




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:251826 發(fā)表于 2017-11-21 11:42 | 只看該作者
我想問一下 單串口 GPS搜星過程會(huì)占用串口 無(wú)法形成長(zhǎng)連接 請(qǐng)問如何解決
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 综合久久av | 久久精品欧美一区二区三区不卡 | 日韩在线播放一区 | 黄色网址在线免费播放 | 国产精品自产拍在线观看蜜 | 热久色 | 91久久| 日韩免费 | 伊人久久成人 | 欧美日韩亚洲视频 | 欧美日本韩国一区二区三区 | 国产丝袜一区二区三区免费视频 | 成人二区 | 中文成人在线 | 91免费观看 | 欧美亚洲国产日韩 | 欧美一级免费看 | 国产精品一区二区av | 欧美在线一区二区视频 | 欧美成人影院在线 | 久久免费视频网 | 成人一区二区三区在线观看 | 免费国产成人av | 一区二区三区四区免费在线观看 | 欧美精品第一区 | 香蕉视频久久久 | 男女羞羞的网站 | 日韩在线视频免费观看 | 国产一区二区三区 | 特一级毛片 | 丁香婷婷成人 | 伊人久久免费视频 | 亚洲第一区久久 | 亚洲一区国产 | 久久久久九九九女人毛片 | 中文字幕一二三 | 中文在线视频观看 | 天天摸天天干 | 国产精品91视频 | 欧美亚洲视频在线观看 | 久久6|