一、Cubemx配置
MPUSCL和MPUSDA连接mpu6050;
SCL和SDA连接OLED;
二、mpu6050相关代码
三、main.c
#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 */
}