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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2923|回復: 1
收起左側

stm32串口接JY901源程序

[復制鏈接]
ID:882006 發表于 2021-8-3 12:00 | 顯示全部樓層 |閱讀模式
WT901C485接線圖.jpg WT901C485現象.jpg

單片機源程序如下:
  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 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久操国产| 欧美精品久久久久 | 91在线视频免费观看 | 中文字幕亚洲区一区二 | www.四虎.com | 日韩三级 | 国产一区二区在线播放视频 | 欧美激情一区二区三区 | 国产99久久精品一区二区永久免费 | 国产精品视屏 | 天天精品在线 | 91精品国产91久久久久久吃药 | 国产一区二 | 欧美一级片黄色 | 久久av一区二区三区 | 亚洲精品久久久9婷婷中文字幕 | 国产精品一区二区在线免费观看 | 久草精品视频 | av中文字幕在线播放 | 日本成年免费网站 | 91精品国产91久久久久久吃药 | 99久久久无码国产精品 | 国产日韩精品久久 | 自拍偷拍亚洲一区 | 国产一级大片 | 欧美理伦片在线播放 | www.亚洲一区 | 精品久久久久一区二区国产 | 精品久久国产老人久久综合 | 国产毛片毛片 | 欧美乱人伦视频 | 成人二区 | 最新中文字幕在线 | 亚洲精品白浆高清久久久久久 | 波波电影院一区二区三区 | 婷婷色婷婷 | 国产探花在线精品一区二区 | 久久久亚洲 | 色网在线看 | 久久香蕉网 | 欧美电影免费观看高清 |