国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee

ELEOK

標題: STM32單片機MPU6050模塊GY-521串口輸出(修改官方代碼錯誤親... [打印本頁]

作者: 路漫漫    時間: 2020-5-24 01:28
標題: STM32單片機MPU6050模塊GY-521串口輸出(修改官方代碼錯誤親...
完整源碼: 串口.7z (205.84 KB, 售價: 2 E幣)

部分源碼:
  1. /*******************************************************************************
  2. // GY-521 MPU6050 IIC測試程序
  3. // 使用單片機STM32F103C8T6
  4. // 晶振:8.00M
  5. // 編譯環境 Keil uVision4
  6. // 時間:2012年5月1日
  7. // 與模塊連接 GPIOB6->SCL GPIOB7->SDA      
  8. // 使用:STM32F103C8T6串口1連接電腦
  9. // 電腦串口助手顯示,波特率:115200
  10. *******************************************************************************/

  11. #include "stm32f10x_lib.h"
  12. #include  <math.h>    //Keil library  

  13. GPIO_InitTypeDef GPIO_InitStructure;
  14. ErrorStatus HSEStartUpStatus;

  15. #define   uchar unsigned char
  16. #define   uint unsigned int        

  17. // 定義MPU6050內部地址
  18. //****************************************
  19. #define        SMPLRT_DIV                0x19        //陀螺儀采樣率,典型值:0x07(125Hz)
  20. #define        CONFIG                        0x1A        //低通濾波頻率,典型值:0x06(5Hz)
  21. #define        GYRO_CONFIG                0x1B        //陀螺儀自檢及測量范圍,典型值:0x18(不自檢,2000deg/s)
  22. #define        ACCEL_CONFIG        0x1C        //加速計自檢、測量范圍及高通濾波頻率,典型值:0x01(不自檢,2G,5Hz)
  23. #define        ACCEL_XOUT_H        0x3B
  24. #define        ACCEL_XOUT_L        0x3C
  25. #define        ACCEL_YOUT_H        0x3D
  26. #define        ACCEL_YOUT_L        0x3E
  27. #define        ACCEL_ZOUT_H        0x3F
  28. #define        ACCEL_ZOUT_L        0x40
  29. #define        TEMP_OUT_H                0x41
  30. #define        TEMP_OUT_L                0x42

  31. #define        GYRO_XOUT_H                0x43
  32. #define        GYRO_XOUT_L                0x44        
  33. #define        GYRO_YOUT_H                0x45
  34. #define        GYRO_YOUT_L                0x46
  35. #define        GYRO_ZOUT_H                0x47
  36. #define        GYRO_ZOUT_L                0x48

  37. #define        PWR_MGMT_1                0x6B        //電源管理,典型值:0x00(正常啟用)
  38. #define        WHO_AM_I                0x75        //IIC地址寄存器(默認數值0x68,只讀)


  39. //****************************

  40. #define        MPU6050_Addr   0xD0          //定義器件在IIC總線中的從地址,根據ALT  ADDRESS地址引腳不同修改

  41. unsigned char TX_DATA[4];           //顯示據緩存區
  42. unsigned char BUF[10];       //接收數據緩存區
  43. char  test=0;                                  //IIC用到
  44. short T_X,T_Y,T_Z,T_T;                 //X,Y,Z軸,溫度

  45. //************************************
  46. /*模擬IIC端口輸出輸入定義*/
  47. #define SCL_H         GPIOB->BSRR = GPIO_Pin_6
  48. #define SCL_L         GPIOB->BRR  = GPIO_Pin_6
  49.    
  50. #define SDA_H         GPIOB->BSRR = GPIO_Pin_7
  51. #define SDA_L         GPIOB->BRR  = GPIO_Pin_7

  52. #define SCL_read      GPIOB->IDR  & GPIO_Pin_6
  53. #define SDA_read      GPIOB->IDR  & GPIO_Pin_7

  54. /* 函數申明 -----------------------------------------------*/
  55. void RCC_Configuration(void);
  56. void GPIO_Configuration(void);
  57. void NVIC_Configuration(void);
  58. void USART1_Configuration(void);
  59. void WWDG_Configuration(void);
  60. void Delay(u32 nTime);
  61. void Delayms(vu32 m);  
  62. /* 變量定義 ----------------------------------------------*/

  63.   /*******************************/
  64. void DATA_printf(uchar *s,short temp_data)
  65. {
  66.         if(temp_data<0){
  67.         temp_data=-temp_data;
  68.     *s='-';
  69.         }
  70.         else *s=' ';
  71.     *++s =temp_data/100+0x30;
  72.     temp_data=temp_data%100;     //取余運算
  73.     *++s =temp_data/10+0x30;
  74.     temp_data=temp_data%10;      //取余運算
  75.     *++s =temp_data+0x30;         
  76. }

  77. /*******************************************************************************
  78. * Function Name  : I2C_GPIO_Config
  79. * Description    : Configration Simulation IIC GPIO
  80. * Input          : None
  81. * Output         : None
  82. * Return         : None
  83. ****************************************************************************** */
  84. void I2C_GPIO_Config(void)
  85. {
  86.   GPIO_InitTypeDef  GPIO_InitStructure;

  87.   GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_6;
  88.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  89.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;  
  90.   GPIO_Init(GPIOB, &GPIO_InitStructure);

  91.   GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_7;
  92.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  93.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
  94.   GPIO_Init(GPIOB, &GPIO_InitStructure);
  95. }

  96. /*******************************************************************************
  97. * Function Name  : I2C_delay
  98. * Description    : Simulation IIC Timing series delay
  99. * Input          : None
  100. * Output         : None
  101. * Return         : None
  102. ****************************************************************************** */
  103. void I2C_delay(void)
  104. {
  105.                
  106.    u8 i=30; //這里可以優化速度        ,經測試最低到5還能寫入
  107.    while(i)
  108.    {
  109.      i--;
  110.    }  
  111. }

  112. void delay5ms(void)
  113. {
  114.                
  115.    int i=5000;  
  116.    while(i)
  117.    {
  118.      i--;
  119.    }  
  120. }
  121. /*******************************************************************************
  122. * Function Name  : I2C_Start
  123. * Description    : Master Start Simulation IIC Communication
  124. * Input          : None
  125. * Output         : None
  126. * Return         : Wheather         Start
  127. ****************************************************************************** */
  128. bool I2C_Start(void)
  129. {
  130.         SDA_H;
  131.         SCL_H;
  132.         I2C_delay();
  133.         if(!SDA_read)return FALSE;        //SDA線為低電平則總線忙,退出
  134.         SDA_L;
  135.         I2C_delay();
  136.         if(SDA_read) return FALSE;        //SDA線為高電平則總線出錯,退出
  137.         SDA_L;
  138.         I2C_delay();
  139.         return TRUE;
  140. }
復制代碼






歡迎光臨 ELEOK (http://m.afoofa.cn/) Powered by Discuz! X5.0