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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3680|回復: 0
打印 上一主題 下一主題
收起左側

stm32庫函數版本GPS源碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:284564 發表于 2018-2-21 10:02 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
stm32GPS源碼,可以在上位機上顯示

單片機源程序如下:
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"                           
  5. #include "lcd.h"
  6. #include "usmart.h"                          
  7. #include "gps.h"       
  8. #include "usart3.h"        
  9. #include "key.h"          
  10. #include "string.h"       
  11. //ALIENTEK 戰艦V3/精英開發板擴展實驗16
  12. //ATK-S1216F8 GPS模塊測試實驗  

  13. u8 USART1_TX_BUF[USART3_MAX_RECV_LEN];                                         //串口1,發送緩存區
  14. nmea_msg gpsx;                                                                                         //GPS信息
  15. __align(4) u8 dtbuf[50];                                                                   //打印緩存器
  16. const u8*fixmode_tbl[4]={"Fail","Fail"," 2D "," 3D "};        //fix mode字符串
  17.           
  18. //顯示GPS定位信息
  19. void Gps_Msg_Show(void)
  20. {
  21.         float tp;                  
  22.         POINT_COLOR=BLUE;           
  23.         tp=gpsx.longitude;          
  24.         sprintf((char *)dtbuf,"Longitude:%.5f %1c   ",tp/=100000,gpsx.ewhemi);        //得到經度字符串
  25.         LCD_ShowString(30,120,200,16,16,dtbuf);                   
  26.         tp=gpsx.latitude;          
  27.         sprintf((char *)dtbuf,"Latitude:%.5f %1c   ",tp/=100000,gpsx.nshemi);        //得到緯度字符串
  28.         LCD_ShowString(30,140,200,16,16,dtbuf);                  
  29.         tp=gpsx.altitude;          
  30.         sprintf((char *)dtbuf,"Altitude:%.1fm     ",tp/=10);                                    //得到高度字符串
  31.         LCD_ShowString(30,160,200,16,16,dtbuf);                                   
  32.         tp=gpsx.speed;          
  33.         sprintf((char *)dtbuf,"Speed:%.3fkm/h     ",tp/=1000);                                    //得到速度字符串         
  34.         LCD_ShowString(30,180,200,16,16,dtbuf);                                             
  35.         if(gpsx.fixmode<=3)                                                                                                                //定位狀態
  36.         {  
  37.                 sprintf((char *)dtbuf,"Fix Mode:%s",fixmode_tbl[gpsx.fixmode]);       
  38.           LCD_ShowString(30,200,200,16,16,dtbuf);                          
  39.         }                   
  40.         sprintf((char *)dtbuf,"GPS+BD Valid satellite:%02d",gpsx.posslnum);                         //用于定位的GPS衛星數
  41.         LCD_ShowString(30,220,200,16,16,dtbuf);            
  42.         sprintf((char *)dtbuf,"GPS Visible satellite:%02d",gpsx.svnum%100);                         //可見GPS衛星數
  43.         LCD_ShowString(30,240,200,16,16,dtbuf);
  44.        
  45.         sprintf((char *)dtbuf,"BD Visible satellite:%02d",gpsx.beidou_svnum%100);                         //可見北斗衛星數
  46.         LCD_ShowString(30,260,200,16,16,dtbuf);
  47.        
  48.         sprintf((char *)dtbuf,"UTC Date:%04d/%02d/%02d   ",gpsx.utc.year,gpsx.utc.month,gpsx.utc.date);        //顯示UTC日期
  49.         LCD_ShowString(30,280,200,16,16,dtbuf);                    
  50.         sprintf((char *)dtbuf,"UTC Time:%02d:%02d:%02d   ",gpsx.utc.hour,gpsx.utc.min,gpsx.utc.sec);        //顯示UTC時間
  51.   LCD_ShowString(30,300,200,16,16,dtbuf);                            
  52. }
  53. int main(void)
  54. {         
  55.         u16 i,rxlen;
  56.         u16 lenx;
  57.         u8 key=0XFF;
  58.         u8 upload=0;            
  59.         delay_init();                     //延時函數初始化          
  60.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置中斷優先級分組為組2:2位搶占優先級,2位響應優先級
  61.         uart_init(115200);                 //串口初始化為115200
  62.         usmart_dev.init(72);                //初始化USMART               
  63.         LED_Init();                                          //初始化與LED連接的硬件接口
  64.         KEY_Init();                                        //初始化按鍵
  65.         LCD_Init();                                           //初始化LCD   
  66.         usart3_init(38400);                //初始化串口3
  67.         POINT_COLOR=RED;
  68.         LCD_ShowString(30,20,200,16,16,"ALIENTEK STM32F1 ^_^");          
  69.         LCD_ShowString(30,40,200,16,16,"S1216F8 GPS TEST");       
  70.         LCD_ShowString(30,60,200,16,16,"ATOM@ALIENTEK");
  71.         LCD_ShowString(30,80,200,16,16,"KEY0:Upload NMEA Data SW");                                                                                                         
  72.   LCD_ShowString(30,100,200,16,16,"NMEA Data Upload:OFF");
  73.         if(SkyTra_Cfg_Rate(5)!=0)        //設置定位信息更新速度為5Hz,順便判斷GPS模塊是否在位.
  74.         {
  75.            LCD_ShowString(30,120,200,16,16,"SkyTraF8-BD Setting...");
  76.                 do
  77.                 {
  78.                         usart3_init(9600);                        //初始化串口3波特率為9600
  79.                   SkyTra_Cfg_Prt(3);                        //重新設置模塊的波特率為38400
  80.                         usart3_init(38400);                        //初始化串口3波特率為38400
  81.       key=SkyTra_Cfg_Tp(100000);        //脈沖寬度為100ms
  82.                 }while(SkyTra_Cfg_Rate(5)!=0&&key!=0);//配置SkyTraF8-BD的更新速率為5Hz
  83.           LCD_ShowString(30,120,200,16,16,"SkyTraF8-BD Set Done!!");
  84.                 delay_ms(500);
  85.                 LCD_Fill(30,120,30+200,120+16,WHITE);//清除顯示
  86.         }
  87.         while(1)
  88.         {               
  89.                 delay_ms(1);
  90.                 if(USART3_RX_STA&0X8000)                //接收到一次數據了
  91.                 {
  92.                         rxlen=USART3_RX_STA&0X7FFF;        //得到數據長度
  93.                         for(i=0;i<rxlen;i++)USART1_TX_BUF[i]=USART3_RX_BUF[i];          
  94.                         USART3_RX_STA=0;                           //啟動下一次接收
  95.                         USART1_TX_BUF[i]=0;                        //自動添加結束符
  96.                         GPS_Analysis(&gpsx,(u8*)USART1_TX_BUF);//分析字符串
  97.                         Gps_Msg_Show();                                //顯示信息       
  98.                         if(upload)printf("\r\n%s\r\n",USART1_TX_BUF);//發送接收到的數據到串口1
  99.                 }
  100.                 key=KEY_Scan(0);
  101.                 if(key==KEY0_PRES)
  102.                 {
  103.                         upload=!upload;
  104.                         POINT_COLOR=RED;
  105.                         if(upload)LCD_ShowString(30,100,200,16,16,"NMEA Data Upload:ON ");
  106.                         else LCD_ShowString(30,100,200,16,16,"NMEA Data Upload:OFF");
  107.                 }
  108.                 if((lenx%500)==0)
  109.                         LED0=!LED0;
  110.                 lenx++;       
  111.         }
  112. }
復制代碼

所有資料51hei提供下載:
(庫函數版本,適合戰艦V3和精英STM32開發板)擴展實驗16 ATK-S1216F8 GPS模塊實驗.rar (398.26 KB, 下載次數: 32)


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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产成人综合久久 | 亚洲一区电影 | 国产99免费 | 成人在线观看网址 | 亚洲免费在线观看视频 | 中文在线日韩 | 国产天堂 | 日韩一区二区三区av | 爱爱免费视频 | 国产精品一区二区无线 | 人妖一区 | 成人免费小视频 | 日韩精品一区二区三区中文在线 | 欧美精三区欧美精三区 | 99在线免费视频 | 超碰日本| 日韩欧美福利视频 | 日韩不卡视频在线 | 国产精品1区 | 羞羞免费网站 | 91精品国产乱码久久久久久 | 国产高清一区二区三区 | 在线观看av中文字幕 | 中文字幕在线观看一区二区 | 国产成人精品一区二区在线 | 日韩免费视频一区二区 | 污书屋 | 成人久久网 | 国产在线精品一区二区 | 色婷婷一区 | 精品国产一区探花在线观看 | 深夜福利影院 | 国内精品视频在线观看 | 国产成人精品一区二区三区在线 | 99久久久久 | 91秦先生艺校小琴 | 久久久免费| 久久九九影视 | 久久精品国产99国产 | 99精品国自产在线观看 | 国产亚洲精品综合一区 |