首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

STM32测试MPU6050模块成功的程序 特此分

STM32测试MPU6050模块成功的程序 特此分

本帖最后由 yuchengze 于 2016-12-27 11:34 编辑

注意事项:
(1)主程序编译会出现缺乏"stm32f10x_lib.h"文件
         解决办法:在附件中主程序目录添加附件库"STM32F10x",在target opition中的C/C++选项卡中的include path路径中添加"STM32F10x"路径。

(2)MPU模块必须与STM32主控板共地,也就是说用板载电源供电最好。(我原先用的单独供电模块,结果串口输出一直为零)


下面是MPU6050模块程序预览:
  • /*******************************************************************************
  • // GY-521 MPU6050 IIC测试程序
  • // 使用单片机STM32F103C8T6
  • // 晶振:8.00M
  • // 编译环境 Keil uVision4
  • // 时间:2012年5月1日
  • // 与模块连接 GPIOB6->SCL GPIOB7->SDA
  • // 使用:STM32F103C8T6串口1连接电脑
  • // 电脑串口助手显示,波特率:115200
  • // QQ:531389319
  • *******************************************************************************/
  • #include "stm32f10x_lib.h"
  • #include  <math.h>    //Keil library
  • GPIO_InitTypeDef GPIO_InitStructure;
  • ErrorStatus HSEStartUpStatus;
  • #define   uchar unsigned char
  • #define   uint unsigned int
  • // 定义MPU6050内部地址
  • //****************************************
  • #define        SMPLRT_DIV                0x19        //陀螺仪采样率,典型值:0x07(125Hz)
  • #define        CONFIG                        0x1A        //低通滤波频率,典型值:0x06(5Hz)
  • #define        GYRO_CONFIG                0x1B        //陀螺仪自检及测量范围,典型值:0x18(不自检,2000deg/s)
  • #define        ACCEL_CONFIG        0x1C        //加速计自检、测量范围及高通滤波频率,典型值:0x01(不自检,2G,5Hz)
  • #define        ACCEL_XOUT_H        0x3B
  • #define        ACCEL_XOUT_L        0x3C
  • #define        ACCEL_YOUT_H        0x3D
  • #define        ACCEL_YOUT_L        0x3E
  • #define        ACCEL_ZOUT_H        0x3F
  • #define        ACCEL_ZOUT_L        0x40
  • #define        TEMP_OUT_H                0x41
  • #define        TEMP_OUT_L                0x42
  • #define        GYRO_XOUT_H                0x43
  • #define        GYRO_XOUT_L                0x44
  • #define        GYRO_YOUT_H                0x45
  • #define        GYRO_YOUT_L                0x46
  • #define        GYRO_ZOUT_H                0x47
  • #define        GYRO_ZOUT_L                0x48
  • #define        PWR_MGMT_1                0x6B        //电源管理,典型值:0x00(正常启用)
  • #define        WHO_AM_I                0x75        //IIC地址寄存器(默认数值0x68,只读)
  • //****************************
  • #define        MPU6050_Addr   0xD0          //定义器件在IIC总线中的从地址,根据ALT  ADDRESS地址引脚不同修改
  • unsigned char TX_DATA[4];           //显示据缓存区
  • unsigned char BUF[10];       //接收数据缓存区
  • char  test=0;                                  //IIC用到
  • short T_X,T_Y,T_Z,T_T;                 //X,Y,Z轴,温度
  • //************************************
  • /*模拟IIC端口输出输入定义*/
  • #define SCL_H         GPIOB->BSRR = GPIO_Pin_6
  • #define SCL_L         GPIOB->BRR  = GPIO_Pin_6
  • #define SDA_H         GPIOB->BSRR = GPIO_Pin_7
  • #define SDA_L         GPIOB->BRR  = GPIO_Pin_7
  • #define SCL_read      GPIOB->IDR  & GPIO_Pin_6
  • #define SDA_read      GPIOB->IDR  & GPIO_Pin_7
  • /* 函数申明 -----------------------------------------------*/
  • void RCC_Configuration(void);
  • void GPIO_Configuration(void);
  • void NVIC_Configuration(void);
  • void USART1_Configuration(void);
  • void WWDG_Configuration(void);
返回列表