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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

stm32串口接JY901源程序

[復制鏈接]
跳轉到指定樓層
樓主


單片機源程序如下:
  1. /*
  2. 編寫者:Kevin
  3. 編譯環境:MDK-Lite  Version: 5.17
  4. 初版時間: 2016-1-31
  5. 功能:
  6. 用STM32Core平臺串口2讀取JY901的數據,然后通過串口1打印到串口助手,串口助手波特率要選為9600。
  7. JY-901的波特率要修改為9600.
  8. 注意:示例程序輸出的是ASCLL碼,用16進制(HEX)顯示是不能看到準確數據的。
  9. 硬件接線:
  10. USB-TTL工具                 STM32Core                                                                                       JY901
  11. VCC          -----           VCC        --------------------------   VCC
  12. TX           -----           RX1(管腳10)                                                                            
  13. RX           -----           TX1(管腳9)                                                                       
  14. GND          -----           GND        --------------------------   GND
  15.               TX2(管腳2)RX2(管腳3)需要轉換成485總線電平
  16.                                                                                                                                                                                                                                                 A    ----  A
  17.                                                                                                                                                                                                                                                 B    ----  B
  18. ------------------------------------
  19. */
  20. #include <string.h>
  21. #include <stdio.h>
  22. #include "Main.h"
  23. #include "stm32f10x_rcc.h"
  24. #include "stm32f10x_gpio.h"
  25. #include "UART1.h"
  26. #include "UART2.h"
  27. #include "delay.h"
  28. #include "JY901.h"
  29. #include "DIO.h"

  30. struct STime                stcTime;
  31. struct SAcc                 stcAcc;
  32. struct SGyro                 stcGyro;
  33. struct SAngle         stcAngle;
  34. struct SMag                 stcMag;
  35. struct SDStatus stcDStatus;
  36. struct SPress         stcPress;
  37. struct SLonLat         stcLonLat;
  38. struct SGPSV                 stcGPSV;
  39. struct SQ       stcQ;

  40. unsigned char cmd[8] = {0X50,0X03,0X00,0X34,0X00,0X0C,0X09,0X80};//讀取0X34之后的12個寄存器

  41. void CharToShort(unsigned char cTemp[],short sTemp[],short sShortNum)
  42. {
  43.         int i;
  44.         for (i = 0;i<3;i++)
  45.                 sTemp[i] = (cTemp[2*i+sShortNum]<<8)|(cTemp[2*i+sShortNum+1]&0xff);
  46. }

  47. //CopeSerialData為串口2中斷調用函數,串口每收到一個數據,調用一次這個函數。
  48. void CopeSerial2Data(unsigned char ucData)
  49. {
  50.         static unsigned char ucRxBuffer[250];
  51.         static unsigned char ucRxCnt = 0;       
  52.        

  53.         ucRxBuffer[ucRxCnt++]=ucData;        //將收到的數據存入緩沖區中
  54.         if (ucRxBuffer[0]!=0x50) //數據頭不對,則重新開始尋找0x55數據頭
  55.         {
  56.                 ucRxCnt=0;
  57.                 return;
  58.         }
  59.         if (ucRxCnt<29) {return;}//數據不滿29個,則返回
  60.         else
  61.         {
  62.                 ucRxCnt=0;//清空緩存區,將接收緩沖區的字符拷貝到數據結構體里面,從而實現數據的解析。
  63.                 CharToShort(ucRxBuffer,stcAcc.a,3);
  64.                 CharToShort(ucRxBuffer,stcGyro.w,9);
  65.                 CharToShort(ucRxBuffer,stcMag.h,15);
  66.                 CharToShort(ucRxBuffer,stcAngle.Angle,21);               
  67.         }
  68. }

  69. void CopeSerial1Data(unsigned char ucData)
  70. {       
  71.         UART2_Put_Char(ucData);//轉發串口1收到的數據給串口2(JY模塊)
  72. }


  73. int main(void)
  74. {  
  75.         char str[100];
  76.                
  77.         SysTick_init(72,10);//設置時鐘頻率
  78.         Initial_UART1(9600);//接PC的串口
  79.         Initial_UART2(9600);//接WT901C485模塊的串口       
  80.        
  81.         LED_ON();
  82.         delay_ms(1000);//等等WT901C485模初始化完成
  83.         while(1)
  84.         {                       
  85.                 UART2_Put_String(cmd,8);//發送讀取0X34之后的12個寄存器,也就是加速度 角速度 角度和磁場
  86.                         delay_ms(500);
  87.                 //輸出加速度
  88.                 printf("Acc:%.3f %.3f %.3f\r\n",(float)stcAcc.a[0]/32768*16,(float)stcAcc.a[1]/32768*16,(float)stcAcc.a[2]/32768*16);
  89.                         delay_ms(10);
  90.                 //輸出角速度
  91.                 printf("Gyro:%.3f %.3f %.3f\r\n",(float)stcGyro.w[0]/32768*2000,(float)stcGyro.w[1]/32768*2000,(float)stcGyro.w[2]/32768*2000);
  92.                         delay_ms(10);
  93.                 //輸出角度
  94.                 printf("Angle:%.3f %.3f %.3f\r\n",(float)stcAngle.Angle[0]/32768*180,(float)stcAngle.Angle[1]/32768*180,(float)stcAngle.Angle[2]/32768*180);
  95.                         delay_ms(10);
  96.                 //輸出磁場
  97.                 printf("Mag:%d %d %d\r\n\r\n",stcMag.h[0],stcMag.h[1],stcMag.h[2]);       
  98.                     delay_ms(10);//等待傳輸完成
  99.         }//主循環
  100. }
復制代碼

代碼下載,初學,僅供參考,如有錯誤請指正:
STM32Core串口JY901Modbus接串口助手.7z (460.02 KB, 下載次數: 16)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:1001637 發表于 2022-1-13 10:29 | 只看該作者
struct STime                stcTime;
struct SAcc                 stcAcc;
struct SGyro                 stcGyro;
struct SAngle         stcAngle;
struct SMag                 stcMag;
struct SDStatus stcDStatus;
struct SPress         stcPress;
struct SLonLat         stcLonLat;
struct SGPSV                 stcGPSV;
struct SQ       stcQ;
這些是啥意思哇,定義的都是什么東西
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久综合狠狠综合久久综合88 | 五月花丁香婷婷 | 欧日韩不卡在线视频 | 91麻豆精品一区二区三区 | 欧美精品一区三区 | 国产成人综合久久 | 久久免费视频2 | 国产精品国产a | 亚洲视频在线观看 | 男女羞羞视频大全 | 色欧美片视频在线观看 | 亚洲激情视频在线 | 日日操视频 | 中国黄色毛片视频 | 超碰综合| 黄色大片在线免费观看 | av中文字幕在线播放 | 国产精品美女www爽爽爽 | 国产精品久久久久免费 | 午夜影院毛片 | 国产一区三区在线 | 亚洲成人二区 | 日日夜夜91 | 欧美精品在线一区二区三区 | 国产三区四区 | 午夜免费在线电影 | 国产精品九九九 | 欧美精品一区二区三区蜜臀 | 免费看一区二区三区 | 日一区二区 | www.久| 国产精品视频免费观看 | 成人免费视频网站在线观看 | 精品中文字幕一区二区三区 | 国产视频1 | 国产91丝袜在线18 | 成人欧美一区二区三区黑人孕妇 | 高清国产一区二区 | 超碰在线播 | 天天综合永久 | 久久视频精品在线 |