1.软件准备
(1)编程平台:Keil5
(2)CubeMX
(3)XCOM(串口调试助手)
(4)文件资料包:点击跳转下载
2.硬件准备
(1)一个捡来的MPU6050
![](https://img-blog.csdnimg.cn/77d6c9ac4907498b9bb8de57c5fdeb24.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pio5aSp5b-Y562-5Yiw5LqG,size_10,color_FFFFFF,t_70,g_se,x_16)
(2)F1的板子,本例使用经典F103C8T6
![](https://img-blog.csdnimg.cn/e10a7d57a76440bdac2d6310c76f0771.jpg?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pio5aSp5b-Y562-5Yiw5LqG,size_18,color_FFFFFF,t_70,g_se,x_16)
(3)ST-link 下载器
![](https://img-blog.csdnimg.cn/6108cfea4ecf4ee2b96d31679e15e5d7.jpg?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pio5aSp5b-Y562-5Yiw5LqG,size_20,color_FFFFFF,t_70,g_se,x_16)
(4)USB-TTL模块
![](https://img-blog.csdnimg.cn/53f64b96f4a244c1af913252e089a763.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pio5aSp5b-Y562-5Yiw5LqG,size_10,color_FFFFFF,t_70,g_se,x_16)
(5)杜邦线若干
![](https://img-blog.csdnimg.cn/8edc235a99de47859ca4c973632b1864.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pio5aSp5b-Y562-5Yiw5LqG,size_20,color_FFFFFF,t_70,g_se,x_16)
3.模块资料
(1)模块简介:
MPU-6000为全球首例整合性6轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速器时之轴间差的问题,减少了大量的包装空间。MPU-6000整合了3轴陀螺仪、3轴加速器,并含可藉由第二个I2C端口连接其他厂牌之加速器、磁力传感器、或其他传感器的数位运动处理(DMP:Digital MotionProcessor)硬件加速引擎,由主要I2C端口以单一数据流的形式,向应用端输出完整的9轴融合演算技术 MPU-6000的角速度全格感测范围为±250、 主500、±1000与±2000° /sec (dps),可准确追緃快速与慢速动作,并且,用户可程式控制的加速器全格感测范围为±2g、±4g± 8g与± 16g。产品传输可透过最高至400kHz的I2C或最高达20MHz的SPI。
(2)部分参数:
【使用芯片】:MPU-6050 【供电电源】:3-5V(内部低压差稳压) 【通信方式】:标准IIC通信协议 【芯片内置】:16bit AD转换器 【陀螺仪范围】:± 250 500 1000 2000 °/s 【加速度范围】: ±2±4±8±16g
4.CubeMX配置
(1)芯片选择
![](https://img-blog.csdnimg.cn/9ebf2621ec9840b39fc483aef7624954.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pio5aSp5b-Y562-5Yiw5LqG,size_20,color_FFFFFF,t_70,g_se,x_16)
(2)配置RCC、SYS、时钟树
![](https://img-blog.csdnimg.cn/7e1dfbd60d714583897a137c770ff2be.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pio5aSp5b-Y562-5Yiw5LqG,size_20,color_FFFFFF,t_70,g_se,x_16)
配置RCC
![](https://img-blog.csdnimg.cn/1b310b1d3c754cf2899fa969978bef6d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pio5aSp5b-Y562-5Yiw5LqG,size_20,color_FFFFFF,t_70,g_se,x_16)
配置SYS
![](https://img-blog.csdnimg.cn/d573758ae1834a93aa54a409e4e71ee0.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pio5aSp5b-Y562-5Yiw5LqG,size_20,color_FFFFFF,t_70,g_se,x_16)
配置时钟树
(3)配置GPIO
![](https://img-blog.csdnimg.cn/7928a00b641f4f9aa9001e8b79eae42d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pio5aSp5b-Y562-5Yiw5LqG,size_20,color_FFFFFF,t_70,g_se,x_16)
(4)配置串口1
![](https://img-blog.csdnimg.cn/c8b94380f6164753a0a30faaa5625faa.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pio5aSp5b-Y562-5Yiw5LqG,size_20,color_FFFFFF,t_70,g_se,x_16)
(5)设置路径、生成代码工程
(6)解压文件
![](https://img-blog.csdnimg.cn/4436967af6954727aa43e136a6f0ce4d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pio5aSp5b-Y562-5Yiw5LqG,size_20,color_FFFFFF,t_70,g_se,x_16)
5、Keil5代码
(1)勾选Use MicroLIB
![](https://img-blog.csdnimg.cn/8ffbb67c82514e70b3dec16aae4d22f9.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pio5aSp5b-Y562-5Yiw5LqG,size_20,color_FFFFFF,t_70,g_se,x_16)
(2)添加文件
![](https://img-blog.csdnimg.cn/03a9d3dc6f044543a26fd5216d27202e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pio5aSp5b-Y562-5Yiw5LqG,size_20,color_FFFFFF,t_70,g_se,x_16)
(3)添加头文件路径
![](https://img-blog.csdnimg.cn/b962e60019be40e7b8521db54148a155.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pio5aSp5b-Y562-5Yiw5LqG,size_20,color_FFFFFF,t_70,g_se,x_16)
(4)usrat.c代码添加
/* USER CODE BEGIN 0 */
#include "stdio.h"
/* USER CODE END 0 */
/* USER CODE BEGIN 1 */
/*********************************************************
*
*重定义 fputc 函数
*
*********************************************************/
int fputc(int ch,FILE *f)
{
HAL_UART_Transmit (&huart1 ,(uint8_t *)&ch,1,HAL_MAX_DELAY );
return ch;
}
/* USER CODE END 1 */
(5)main函数
#include "stdio.h"
#include "IIC.h"
#include "mpu6050.h"
#include "inv_mpu.h"
#include "inv_mpu_dmp_motion_driver.h"
//========================================================================
int main(void)
{
/* USER CODE BEGIN 1 */
float pitch,roll,yaw; //欧拉角
short aacx,aacy,aacz; //加速度传感器原始数据
short gyrox,gyroy,gyroz; //陀螺仪原始数据
float temp; //温度
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USART1_UART_Init();
/* USER CODE BEGIN 2 */
MPU_Init(); //MPU6050初始化
mpu_dmp_init(); //dmp初始化
/* USER CODE END 2 */
printf("初始化成功!\r\n");
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
HAL_Delay(500);
while(mpu_dmp_get_data(&pitch, &roll, &yaw)); //必须要用while等待,才能读取成功
MPU_Get_Accelerometer(&aacx,&aacy, &aacz); //得到加速度传感器数据
MPU_Get_Gyroscope(&gyrox, &gyroy, &gyroz); //得到陀螺仪数据
temp=MPU_Get_Temperature(); //得到温度信息
printf("X:%.1f° Y:%.1f° Z:%.1f° %.2f°C\r\n",roll,pitch,yaw,temp/100);//串口1输出采集信息
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
6.接线图及效果
![](https://img-blog.csdnimg.cn/1069ba5b56684dccbc948ebd8c0a5a52.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pio5aSp5b-Y562-5Yiw5LqG,size_10,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/237fc93aafdc4e30aef2477dbc54d2c9.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pio5aSp5b-Y562-5Yiw5LqG,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/53c03b231b7e48068cc4358eec73f728.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pio5aSp5b-Y562-5Yiw5LqG,size_19,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/35a16593902343238fb724733cc3ad9b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5pio5aSp5b-Y562-5Yiw5LqG,size_14,color_FFFFFF,t_70,g_se,x_16)
本例程源码下载:点击跳转
|