【STM32】HAL库 IIC读取MPU6050

系列文章目录

【STM32】HAL库 新建MDK工程
【STM32】HAL库 串口轮询发送


前言

使用IIC读取,MPU6050

一、STM32CubeMX设置

在这里插入图片描述

二、代码

#define	MPU6050_SMPLRT_DIV		0x19
#define	MPU6050_ACCEL_XOUT_H	0x3B
#define	MPU6050_GYRO_XOUT_H		0x43
#define	MPU6050_PWR_MGMT_1		0x6B
#define	MPU6050_WHO_AM_I		0x75

uint8_t MPU6050_init[6] = {0x01 ,0x00 ,0x09 ,0x06 ,0x18 ,0x18};
void MPU6050_Init(void)
{
	HAL_I2C_Mem_Write(&hi2c2,0xD0,MPU6050_PWR_MGMT_1,  I2C_MEMADD_SIZE_8BIT,&MPU6050_init[0],2,10);
	HAL_I2C_Mem_Write(&hi2c2,0xD0,MPU6050_SMPLRT_DIV,  I2C_MEMADD_SIZE_8BIT,&MPU6050_init[2],4,10);
}
void MPU6050_GetData(uint8_t *Arr)
{
	HAL_I2C_Mem_Read(&hi2c2,0xD0,MPU6050_ACCEL_XOUT_H ,I2C_MEMADD_SIZE_8BIT,Arr,6,10000); 
   	HAL_I2C_Mem_Read(&hi2c2,0xD0,MPU6050_GYRO_XOUT_H  ,I2C_MEMADD_SIZE_8BIT,Arr+6,6,10000); 
}
void convert_uint8_to_uint16(int16_t *output)
{
	static uint8_t arr[12];
	MPU6050_GetData(arr);
    for (int i = 0; i < 12; i += 2)
    {
        output[i / 2] = (arr[i] << 8) | arr[i + 1];
    }
}
  /* USER CODE BEGIN 2 */	
	MPU6050_Init();
  /* USER CODE END 2 */

  /* Infinite loop */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		convert_uint8_to_uint16(arr16);
		for(i = 0; i < 6; i++)
		{
			printf("%d\r\n",arr16[i]);
		}
   		 HAL_Delay(1000);
  }
  /* USER CODE END 3 */
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

youuuuvvu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值