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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STM32F103單片機通過藍牙發送獲取的GPS信息到手機上 主函數怎么寫

[復制鏈接]
跳轉到指定樓層
樓主
ID:508887 發表于 2019-4-11 09:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
基于STM32F103單片機通過藍牙發送獲取的GPS信息到手機上 主函數怎么寫啊??各位大佬用 的藍牙是HC-06  GPS是  ATK-S1216

  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"                           
  5. #include "lcd.h"  
  6. #include "key.h"     
  7. #include "usmart.h"
  8. #include "gps.h"
  9. #include "string.h"               
  10. #include "usart2.h"
  11. #include "hc06.h"



  12. u8 USART1_TX_BUF[USART2_MAX_RECV_LEN];                                         //串口1,發送緩存區
  13. nmea_msg gpsx;                                                                                         //GPS信息
  14. __align(4) u8 dtbuf[50];                                                                   //打印緩存器
  15. const u8*fixmode_tbl[4]={"Fail","Fail"," 2D "," 3D "};        //fix mode字符串
  16.          
  17. //顯示GPS定位信息

  18. //void HC06_Role_Show(void)
  19. //{
  20. //        if(HC06_Get_Role()==1)LCD_ShowString(30,140,200,16,16,"ROLE:Master");        //主機
  21. //        else LCD_ShowString(30,140,200,16,16,"ROLE:Slave ");                                         //從機
  22. //}
  23. ////顯示ATK-hc06模塊的連接狀態
  24. //void HC06_Sta_Show(void)
  25. //{                                                                                                
  26. //        if(HC06_STATE)LCD_ShowString(120,140,120,16,16,"STA:Connected ");                        //連接成功
  27. //        else LCD_ShowString(120,140,120,16,16,"STA:Disconnect");                                 //未連接                                 
  28. //}

  29. //void Gps_Msg_Show(void)
  30. //{
  31. //         float tp;                  
  32. //        POINT_COLOR=BLUE;           
  33. //        tp=gpsx.longitude;           
  34. //        sprintf((char *)dtbuf,"Longitude:%.5f %1c   ",tp/=100000,gpsx.ewhemi);        //得到經度字符串
  35. //         LCD_ShowString(30,120,200,16,16,dtbuf);                    
  36. //        tp=gpsx.latitude;           
  37. //        sprintf((char *)dtbuf,"Latitude:%.5f %1c   ",tp/=100000,gpsx.nshemi);        //得到緯度字符串
  38. //         LCD_ShowString(30,140,200,16,16,dtbuf);                  
  39. //        tp=gpsx.altitude;           
  40. //         sprintf((char *)dtbuf,"Altitude:%.1fm     ",tp/=10);                                    //得到高度字符串
  41. //         LCD_ShowString(30,160,200,16,16,dtbuf);                                    
  42. //        tp=gpsx.speed;           
  43. //         sprintf((char *)dtbuf,"Speed:%.3fkm/h     ",tp/=1000);                                    //得到速度字符串         
  44. //         LCD_ShowString(30,180,200,16,16,dtbuf);                                             
  45. //        if(gpsx.fixmode<=3)                                                                                                                //定位狀態
  46. //        {  
  47. //                sprintf((char *)dtbuf,"Fix Mode:%s",fixmode_tbl[gpsx.fixmode]);        
  48. //          LCD_ShowString(30,200,200,16,16,dtbuf);                           
  49. //        }                    
  50. //        sprintf((char *)dtbuf,"GPS+BD Valid satellite:%02d",gpsx.posslnum);                         //用于定位的GPS衛星數
  51. //         LCD_ShowString(30,220,200,16,16,dtbuf);            
  52. //        sprintf((char *)dtbuf,"GPS Visible satellite:%02d",gpsx.svnum%100);                         //可見GPS衛星數
  53. //         LCD_ShowString(30,240,200,16,16,dtbuf);
  54. //        
  55. //        sprintf((char *)dtbuf,"BD Visible satellite:%02d",gpsx.beidou_svnum%100);                         //可見北斗衛星數
  56. //         LCD_ShowString(30,260,200,16,16,dtbuf);
  57. //        
  58. //        sprintf((char *)dtbuf,"UTC Date:%04d/%02d/%02d   ",gpsx.utc.year,gpsx.utc.month,gpsx.utc.date);        //顯示UTC日期
  59. //        LCD_ShowString(30,280,200,16,16,dtbuf);                    
  60. //        sprintf((char *)dtbuf,"UTC Time:%02d:%02d:%02d   ",gpsx.utc.hour,gpsx.utc.min,gpsx.utc.sec);        //顯示UTC時間
  61. //  LCD_ShowString(30,300,200,16,16,dtbuf);                  
  62. //}
  63. int main(void)
  64. {
  65.         u8 t;
  66.         u8 sendmask=0;
  67.         u8 sendcnt=0;
  68.         u8 sendbuf[20];         
  69. // u8 reclen=0;  
  70.   u16 i,rxlen;
  71.         u16 lenx;
  72.         u8 key=0XFF;
  73.         u8 upload=0;
  74.         POINT_COLOR=RED;         
  75.         delay_init();                     //延時函數初始化
  76.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級         
  77.         uart_init(115200);                 //串口初始化為9600        
  78.         USART2_Init(38400);  //初始化串口2波特率為115200
  79.         LCD_Init();                                //初始化液晶
  80.         LED_Init();                 //LED初始化         
  81.         KEY_Init();                                //按鍵初始化
  82.         usmart_dev.init(72);        //usmart初始化             CHUAN KOU

  83.          


  84.         if(SkyTra_Cfg_Rate(5)!=0)        //設置定位信息更新速度為5Hz,順便判斷GPS模塊是否在位.
  85.         {
  86.            //LCD_ShowString(30,120,200,16,16,"S1216F8-BD Setting...");
  87.                 do
  88.                 {
  89.                         USART2_Init(9600);                        //初始化串口3波特率為9600
  90.                   SkyTra_Cfg_Prt(3);                        //重新設置模塊的波特率為38400
  91.                         USART2_Init(38400);                        //初始化串口3波特率為38400
  92.       key=SkyTra_Cfg_Tp(100000);        //脈沖寬度為100ms
  93.                 }
  94.                 while(SkyTra_Cfg_Rate(5)!=0&&key!=0);//配置SkyTraF8-BD的更新速率為5Hz
  95.           //LCD_ShowString(30,120,200,16,16,"S1216F8-BD Set Done!!");
  96.                 delay_ms(500);
  97.                 //LCD_Fill(30,120,30+200,120+16,WHITE);//清除顯示
  98.         }
  99.         while(1)
  100.         {               
  101.                 delay_ms(1);
  102.                 if(USART2_RX_STA&0X8000)                //接收到一次數據了
  103.                 {
  104.                         rxlen=USART2_RX_STA&0X7FFF;        //得到數據長度
  105.                         for(i=0;i<rxlen;i++)USART1_TX_BUF[i]=USART2_RX_BUF[i];           
  106.                          USART2_RX_STA=0;                           //啟動下一次接收
  107.                         USART1_TX_BUF[i]=0;                        //自動添加結束符
  108.                         GPS_Analysis(&gpsx,(u8*)USART1_TX_BUF);//分析字符串
  109.                         //Gps_Msg_Show();                                //顯示信息        
  110.                         if(upload)printf("\r\n%s\r\n",USART1_TX_BUF);//發送接收到的數據到串口1
  111.                  }
  112. //                key=KEY_Scan(0);
  113. //                if(key==KEY0_PRES)
  114. //                {
  115. //                        upload=!upload;
  116. //                        POINT_COLOR=RED;
  117. //                        if(upload)LCD_ShowString(30,100,200,16,16,"NMEA Data Upload:ON ");
  118. //                        else LCD_ShowString(30,100,200,16,16,"NMEA Data Upload:OFF");
  119. //                 }
  120.                 if((lenx%500)==0)
  121.                         LED0=!LED0;
  122.                 lenx++;        
  123.         }

  124.                 while(HC06_Init())        //初始化ATK-hc06模塊  
  125.         {
  126. //                LCD_ShowString(30,90,200,16,16,"ATK-hc06 Error!");
  127. //                delay_ms(500);
  128. //                LCD_ShowString(30,90,200,16,16,"Please Check!!!");
  129.                         POINT_COLOR=BLUE;
  130.                   delay_ms(100);
  131.         }                                                                                               
  132. //          LCD_ShowString(30,90,200,16,16,"WK_UP:ROLE KEY0:SEND/STOP");  
  133. //          LCD_ShowString(30,110,200,16,16,"ATK-hc06 Standby!");  
  134. //          LCD_ShowString(30,160,200,16,16,"Send:");        
  135. //          LCD_ShowString(30,180,200,16,16,"Receive:");        
  136. //    HC06_Role_Show();         
  137.          while(1)
  138.         {               
  139. //                key=KEY_Scan(0);
  140. //                if(key==WKUP_PRES)                                                //切換模塊主從設置
  141. //                {
  142. //                           key=HC06_Get_Role();
  143. //                        if(key!=0XFF)
  144. //                        {
  145. //                                key=!key;                                          //狀態取反           
  146. //                                if(key==0)HC06_Set_Cmd("AT+ROLE=0");
  147. //                                else HC06_Set_Cmd("AT+ROLE=1");
  148. //                                HC06_Role_Show();
  149. //                                HC06_Set_Cmd("AT+RESET");        //復位ATK-hc06模塊
  150. //                        }
  151. //                }else

  152.         if(key==KEY0_PRES)
  153.                 {
  154.                         sendmask=!sendmask;                                //發送/停止發送           
  155.                         if(sendmask==0)LCD_Fill(30+40,160,240,160+16,WHITE);//清除顯示
  156.                 }else delay_ms(10);           
  157.                 if(t==50)
  158.                 {
  159.                         if(sendmask)                                        //定時發送
  160.                         {
  161.                                 sprintf((char*)sendbuf,"ALIENTEK hc06 %d\r\n",sendcnt);
  162.                                   LCD_ShowString(30+40,160,200,16,16,sendbuf);        //顯示發送數據        
  163.                                 u2_printf("ALIENTEK hc06 %d\r\n",sendcnt);                //發送到藍牙模塊
  164.                                 sendcnt++;
  165.                                 if(sendcnt>99)sendcnt=0;
  166.                         }
  167. //                        HC06_Sta_Show();            
  168. //                        t=0;
  169. //                        LED0=!LED0;              
  170. //                }         
  171. //                if(USART2_RX_STA&0X8000)                        //接收到一次數據了
  172. //                {
  173. //                        LCD_Fill(30,200,240,320,WHITE);        //清除顯示
  174. //                         reclen=USART2_RX_STA&0X7FFF;        //得到數據長度
  175. //                          USART2_RX_BUF[reclen]=0;                 //加入結束符
  176. //                        if(reclen==9||reclen==8)                 //控制DS1檢測
  177. //                        {
  178. //                                if(strcmp((const char*)USART2_RX_BUF,"+LED1 ON")==0)LED1=0;        //打開LED1
  179. //                                if(strcmp((const char*)USART2_RX_BUF,"+LED1 OFF")==0)LED1=1;//關閉LED1
  180. //                        }
  181. //                         LCD_ShowString(30,200,209,119,16,USART2_RX_BUF);//顯示接收到的數據
  182. //                         USART2_RX_STA=0;         
  183. //                }                                                                                                                                                                        
  184. //                t++;        
  185.         }                                                                                            
  186. }        
  187. }
  188.         
復制代碼

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

使用道具 舉報

沙發
ID:943849 發表于 2021-6-24 11:33 | 只看該作者
請問這個項目代碼你實現了嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人免费网站视频 | 中文字幕在线第一页 | 日本三级电影免费 | 亚洲视频www | 亚洲精品国产一区 | 天天成人综合网 | 亚洲 成人 av | 午夜专区 | 最近日韩中文字幕 | 免费看黄色小视频 | 欧美偷偷操| 国产综合精品一区二区三区 | 国产农村妇女精品一区 | 全免费a级毛片免费看视频免 | www.欧美视频 | 中文字幕亚洲视频 | 中文成人在线 | h视频亚洲| 午夜理伦三级理论三级在线观看 | 国产激情在线看 | 精精国产xxxx视频在线播放 | 一级黄色录像毛片 | 久草在线青青草 | 国产精品99久久久久久久久久久久 | 日本国产精品视频 | 97免费在线观看视频 | 91大神xh98xh系列全部 | 国产精品久久久久永久免费观看 | 日韩高清不卡 | 91精品久久久久久久久 | 欧美成人a | 蜜臀久久 | 噜啊噜在线 | 亚洲人成人一区二区在线观看 | 日本精品一区二区三区视频 | 超碰成人在线观看 | 97国产一区二区精品久久呦 | 精品国产乱码久久久久久果冻传媒 | 一级片网址 | 麻豆一区一区三区四区 | 亚洲精品乱码 |