找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10202|回复: 12
打印 上一主题 下一主题
收起左侧

STM32-MPU6050测试程序 简单地获取传感器数据

  [复制链接]
跳转到指定楼层
楼主
/*********************************************************************************************/
【*】程序简介

-工程名称:陀螺仪—MPU6050
-实验平台: 秉火STM32 指南者  开发板
-MDK版本:5.16
-ST固件库版本:3.5

【 !】功能简介:

基本MPU6050驱动,简单地获取传感器数据。

【*】注意事项:

1.本工程使用硬件IIC,硬件IIC与液晶屏同时使用时会有冲突,所以本程序不包含液晶输出。

2.MPU6050的AD0引脚接GND时,地址为0x68 ,接3.3V时,地址为0x69,
  
  可在bsp_i2c.h文件修改宏MPU6050_SLAVE_ADDRESS的值来匹配硬件连接,默认AD0接地,使用0x68地址

  #define MPU6050_SLAVE_ADDRESS  (0x68<<1)      


【 !】实验操作:

步骤如下(步骤可参考配套的教程,有图片说明):

1.按照引脚分配说明连接好MPU6050模块和开发板。

2.确认开发板的USB TO USART接口已与电脑相连,确认电脑端能查看到该串口设备。

3..打开串口调试助手(波特率为115200),即可查看数据输出。




【*】 引脚分配
陀螺仪(MPU6050):
MPU6050芯片的I2C接口与STM32的I2C1相连,且已接上拉电阻。
        VCC <--->3.3或5V
        GND    <--->GND
        SCL    <--->PB6
        SDA    <--->PB7
        INT <--->PA11  传感器数据中断引脚
        AD0 <--->悬空或接地
        
串口(TTL-USB TO USART):
CH340的收发引脚与STM32的发收引脚相连。
    RX<--->PA9
    TX<--->PA10
                    

/*********************************************************************************************/

【*】 版本

-程序版本:1.0
-发布日期:2015-10

-版本更新说明:首次发布

/*********************************************************************************************/

/*********************************************************************************************/



stm32单片机源程序:
  1. /**
  2.   ******************************************************************************
  3.   * @file    main.c
  4.   * @author  LYC
  5.   * @version V1.0
  6.   * @date    2014-04-22
  7.   * @brief   MPU6050 硬件IIC测试
  8.   ******************************************************************************
  9.   * @attention
  10.   * 实验平台:秉火 指南者 STM32 开发板
  11.   ******************************************************************************
  12.   */
  13.   
  14. #include "stm32f10x.h"
  15. #include "stm32f10x_it.h"
  16. #include "./systick/bsp_SysTick.h"
  17. #include "./led/bsp_led.h"
  18. #include "./usart/bsp_usart.h"
  19. #include "./mpu6050/mpu6050.h"
  20. #include "./i2c/bsp_i2c.h"


  21. #define TASK_ENABLE 0
  22. extern unsigned int Task_Delay[NumOfTask];
  23. /*
  24. * t : 定时时间
  25. * Ticks : 多少个时钟周期产生一次中断
  26. * f : 时钟频率 72000000
  27. * t = Ticks * 1/f = (72000000/100000) * (1/72000000) = 10us
  28. */

  29. /**
  30.   * @brief  主函数
  31.   * @param  无  
  32.   * @retval 无
  33.   */
  34. int main(void)
  35. {
  36.         short Acel[3];
  37.         short Gyro[3];
  38.         float Temp;
  39.        
  40.         SysTick_Init();
  41.         SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk;
  42.         /* LED 端口初始化 */
  43.         LED_GPIO_Config();
  44.         /* 串口通信初始化 */
  45.         USART_Config();

  46.         //I2C初始化
  47.         I2C_Bus_Init();
  48.         //MPU6050初始化
  49.         MPU6050_Init();
  50.        
  51.         //检测MPU6050
  52.         if (MPU6050ReadID() == 1)
  53.         {       
  54.                 while(1)
  55.                 {
  56.                         if(Task_Delay[0]==TASK_ENABLE)
  57.                         {
  58.                                 LED2_TOGGLE;
  59.                                 Task_Delay[0]=1000;
  60.                         }
  61.                        
  62.                         if(Task_Delay[1]==0)
  63.                         {
  64.                                 MPU6050ReadAcc(Acel);
  65.                                 printf("加速度:%8d%8d%8d",Acel[0],Acel[1],Acel[2]);
  66.                                 MPU6050ReadGyro(Gyro);
  67.                                 printf("    陀螺仪%8d%8d%8d",Gyro[0],Gyro[1],Gyro[2]);
  68.                                 MPU6050_ReturnTemp(&Temp);
  69.                                 printf("    温度%8.2f\r\n",Temp);
  70.                                
  71.                                 Task_Delay[1]=500;//更新一次数据,可根据自己的需求,提高采样频率,如100ms采样一次
  72.                         }

  73.                         //*************************************        下面是增加任务的格式************************************//
  74.         //                if(Task_Delay[i]==0)
  75.         //                {
  76.         //                        Task(i);
  77.         //                        Task_Delay[i]=;
  78.         //                }

  79.                 }

  80.         }
  81.         else
  82.         {
  83.                 printf("\r\n没有检测到MPU6050传感器!\r\n");


  84. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

下载:
1.硬件STM32-MPU6050.zip (6.44 MB, 下载次数: 196)

评分

参与人数 1黑币 +3 收起 理由
51sunny + 3 很给力!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:305418 发表于 2018-4-10 20:23 | 只看该作者
下载下来学习一下!
回复

使用道具 举报

板凳
ID:318233 发表于 2018-5-1 15:00 | 只看该作者
下载资料学习学习
回复

使用道具 举报

地板
ID:362531 发表于 2018-7-1 11:00 | 只看该作者
很给力的一篇文张啊
回复

使用道具 举报

5#
ID:362531 发表于 2018-7-1 11:01 | 只看该作者
我觉得应该把单片机程序展示出来
回复

使用道具 举报

6#
ID:371971 发表于 2018-7-22 12:23 | 只看该作者
我像知道附件里面是什么??
回复

使用道具 举报

7#
ID:371971 发表于 2018-7-22 19:02 | 只看该作者
这个你自己测试过吗?
回复

使用道具 举报

8#
ID:243161 发表于 2018-8-4 01:24 | 只看该作者
学习学习
回复

使用道具 举报

9#
ID:35915 发表于 2018-8-31 18:47 | 只看该作者
你这测得的是原始值啊,能打印出具体角度、加速度么
回复

使用道具 举报

10#
ID:437810 发表于 2018-12-3 20:28 | 只看该作者
很给力的一篇文张啊
回复

使用道具 举报

11#
ID:474559 发表于 2019-2-1 15:09 | 只看该作者

下载下来学习一下!
回复

使用道具 举报

12#
ID:272602 发表于 2019-4-19 20:18 | 只看该作者
改成i2c2就不行了 啊
回复

使用道具 举报

13#
ID:367125 发表于 2019-6-28 01:30 | 只看该作者
最近在做这方面的仿真,正好学习一下。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表