/*********************************************************************************************/
【*】程序简介
-工程名称:陀螺仪—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单片机源程序:
- /**
- ******************************************************************************
- * @file main.c
- * @author LYC
- * @version V1.0
- * @date 2014-04-22
- * @brief MPU6050 硬件IIC测试
- ******************************************************************************
- * @attention
- * 实验平台:秉火 指南者 STM32 开发板
- ******************************************************************************
- */
-
- #include "stm32f10x.h"
- #include "stm32f10x_it.h"
- #include "./systick/bsp_SysTick.h"
- #include "./led/bsp_led.h"
- #include "./usart/bsp_usart.h"
- #include "./mpu6050/mpu6050.h"
- #include "./i2c/bsp_i2c.h"
- #define TASK_ENABLE 0
- extern unsigned int Task_Delay[NumOfTask];
- /*
- * t : 定时时间
- * Ticks : 多少个时钟周期产生一次中断
- * f : 时钟频率 72000000
- * t = Ticks * 1/f = (72000000/100000) * (1/72000000) = 10us
- */
- /**
- * @brief 主函数
- * @param 无
- * @retval 无
- */
- int main(void)
- {
- short Acel[3];
- short Gyro[3];
- float Temp;
-
- SysTick_Init();
- SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk;
- /* LED 端口初始化 */
- LED_GPIO_Config();
- /* 串口通信初始化 */
- USART_Config();
- //I2C初始化
- I2C_Bus_Init();
- //MPU6050初始化
- MPU6050_Init();
-
- //检测MPU6050
- if (MPU6050ReadID() == 1)
- {
- while(1)
- {
- if(Task_Delay[0]==TASK_ENABLE)
- {
- LED2_TOGGLE;
- Task_Delay[0]=1000;
- }
-
- if(Task_Delay[1]==0)
- {
- MPU6050ReadAcc(Acel);
- printf("加速度:%8d%8d%8d",Acel[0],Acel[1],Acel[2]);
- MPU6050ReadGyro(Gyro);
- printf(" 陀螺仪%8d%8d%8d",Gyro[0],Gyro[1],Gyro[2]);
- MPU6050_ReturnTemp(&Temp);
- printf(" 温度%8.2f\r\n",Temp);
-
- Task_Delay[1]=500;//更新一次数据,可根据自己的需求,提高采样频率,如100ms采样一次
- }
- //************************************* 下面是增加任务的格式************************************//
- // if(Task_Delay[i]==0)
- // {
- // Task(i);
- // Task_Delay[i]=;
- // }
- }
- }
- else
- {
- printf("\r\n没有检测到MPU6050传感器!\r\n");
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
下载:
1.硬件STM32-MPU6050.zip
(6.44 MB, 下载次数: 196)
|