- 文章作者:Wendell
- 原文地址:https://www.jianshu.com/p/e46d45da6f7d
- 转载请注明出处!
说明:
- 开发环境:keil MDK V5.21.1.0
- 硬件平台:STM32F429-apollo开发板(正点原子)
- Env工具:env_released_0.7.1
- RT-Thread版本: 3.1.1
- 本文以RT-Thread官网的AN0003 RT-Thread应用笔记之I2C设备应用指南为依据,在STM32F429-apollo开发板上进行相应实验。
配置工程
在上一篇 AN0002 RT-Thread通用GPIO设备应用指南学习笔记 中已经完成了GPIO的学习,现在我们仍然使用上一篇中使用的工程文件,进行I2C设备的学习。
在工程目录下右击,选择ConEmu Here,打开Env工具。在Env 命令行中输入menuconfig,按enter键进入配置界面,使用menuconfig工具配置工程,找到下图中间红框的2个选项,路径在左上角红框内,使用空格键打开该选项,保存后退出。
Env 命令行中输入pkgs --update,按enter键进行软件包的更新,如果本地已经有所有需要的软件包,则不做改变,如果有缺少的软件包则会自动从GitHub库中下载。
加入代码
由于官方资料使用的开发板为STM32F407探索者,因此官方I2C设备应用指南中设计的实验为使用I2C总线与mpu6050六轴传感器通信,而STM32F429阿波罗开发板已经将该传感器升级为mpu9250九轴传感器,官方并没有相应的驱动文件,因此只好自己动手,丰衣足食喽!根据官方mpu6050的驱动文件和正点原子在裸跑资料中给出的文件,我编写了mpu9250的驱动文件drv_mpu9250.c,放在了资料中,感兴趣的小伙伴可以自己去研究研究。
打开rt-thread学习准备一文中下载的“RT-Thread应用笔记资料(STM32F429阿波罗)”,在“I2C设备应用笔记”文件夹下有代码文件 app_mpu9250.c、 app_mpu9250.h、drv_mpu9250.c、drv_mpu9250.h,将app_mpu9250.c和 app_mpu9250.h文件拷贝到项目文件夹stm32f429-apollo\applications目录下,将drv_mpu9250.c和drv_mpu9250.h文件拷贝到项目文件夹stm32f429-apollo\drivers目录下。
Env工具是通过SConscript文件来组织文件的,手动添加的文件会在下次使用Env工具时被删除,因此修改SConscript文件才是正确的添加方法!
-
使用notepad++打开applications文件夹中的SConscript文件,并按照图中位置添加app_mpu9250.c,保存后退出。
-
使用notepad++打开drivers文件夹中的SConscript文件,并按照图中位置添加drv_mpu9250.c,保存后退出。
在Env命令行中使用scons --target=mdk5 -s命令重新生成工程并打开,可以看到app_mpu9250.c已经成功添加到application目录下,drv_mpu9250.c已经成功添加到drivers目录下! 截图略O(∩_∩)O哈哈~
在application.c文件中添加头文件
#include "app_mpu9250.h"
使用如下函数代替application.c文件的rt_application_init()函数
int rt_application_init(void)
{
rt_thread_t tid;
tid = rt_thread_create("init",
rt_init_thread_entry, RT_NULL,
2048, RT_THREAD_PRIORITY_MAX/3, 20);
if (tid != RT_NULL)
rt_thread_startup(tid);
mpu9250_thread_init();
return 0;
}
编译后下载到开发板,打开串口调试助手XCOM V2.0,按照自己计算机显示的com口编号配置好,串口输出如下图:
又搞定一个,好开心!