STM32F103C8 使用RT-Thread软件包系统读取MPU6050

STM32F103C8 使用RT-Thread软件包系统读取MPU6050

  已经使用了一段时间的RTT了,最近看到RTT的微信公众号经常推送软件包的内容,今天就试一下吧。
MPU6050作为一个很常见的元件自然有相应的软件包啦,

在工程根目录打开ENV工具

1.在这个目录下可以发现很多软件包,我们将MPU6xxx打开
STM32F103C8 使用RT-Thread软件包系统读取MPU6050_第1张图片
2.在打开RTT的iic支持包,同时保持使用软件I2C打开。
退出编译重新生成一下工程,这样所有需要的文件就都被添加到工程中了。
STM32F103C8 使用RT-Thread软件包系统读取MPU6050_第2张图片
3.使用keil打开工程,在rtconfig.h文件中添加如下内容:

#define BSP_USING_I2C2
#define BSP_I2C2_SCL_PIN GET_PIN(B, 10)
#define BSP_I2C2_SDA_PIN GET_PIN(B, 11)

编译工程,就可以使用了,这时打开串口助手
输入mpu6xxx probe i2c2 可以查到到mpu6050设备
输入mpu6xxx read 可以查看加速度和角速度大小
还有一些其他命令在软件包readme文件中有介绍。
STM32F103C8 使用RT-Thread软件包系统读取MPU6050_第3张图片
4.如果要把代码加到工程中可以参考mpu6xxx_sample.c修改。
其中一些需要注意的是:
加入 #include “mpu6xxx.h” 头文件
加入如下代码

		/* Initialize mpu6xxx, The parameter is RT_NULL, means auto probing for i2c*/
    mpu_dev = mpu6xxx_init(MPU6XXX_DEVICE_NAME, RT_NULL);
		if (mpu_dev == RT_NULL)
    {
        rt_kprintf("mpu6xxx init failed\n");
        return -1;
    }

void MPU_entry(void *parameter)
{
	struct mpu6xxx_3axes accel, gyro;
	while (1)
	{
		mpu6xxx_get_accel(mpu_dev, &accel);
    	mpu6xxx_get_gyro(mpu_dev, &gyro);
    	rt_kprintf("accel.x = %3d, accel.y = %3d, accel.z = %3d ", accel.x, accel.y, accel.z);
    	rt_kprintf("gyro.x = %3d gyro.y = %3d, gyro.z = %3d\n", gyro.x, gyro.y, gyro.z);
		rt_thread_mdelay(500);
	}
}

最终结果是这样的
STM32F103C8 使用RT-Thread软件包系统读取MPU6050_第4张图片

好的这篇博客就都这里了

你可能感兴趣的:(RT-Thread,stm32)