(2) 从陀螺仪中获取原始数据并处理; (3) 更新数据并输出。 2. 代码分析 官方的驱动主要是了 MPL软件库(Motion Processing Library),要移植该软件库我们需 要为它提供 I2C 读写接口、定时服务以及 MPU6050 的数据更新标志。若需要输出调试信 息到上位机,还需要提供串口接口。 I2C 读写接口 MPL库的内部对 I2C 读写时都使用 i2c_write 及 i2c_read 函数,在文件“inv_mpu.c” 中给出了它们的接口格式,见代码清单 43-1。 代码清单 43-9 I2C 读写接口(inv_mpu.c 文件) 1 /* The following functions must be defined for this platform: 2 * i2c_write(unsigned char slave_addr, unsigned char reg_addr, 3 * unsigned char length, unsigned char const *data) 4 * i2c_read(unsigned char slave_addr, unsigned char reg_addr, 5 * unsigned char length, unsigned char *data) 6 */ 7 8 #define i2c_write Sensors_I2C_WriteRegister 9 #define i2c_read Sensors_I2C_ReadRegister 这些接口的格式与我们上一小节写的 I2C 读写函数 Sensors_I2C_ReadRegister 及 Sensors_I2C_WriteRegister 一致,所以可直接使用宏替换。 提供定时服务 MPL软件库中使用到了延时及时间戳功能,要求需要提供 delay_ms 函数实现毫秒级延 时,提供 get_ms 获取毫秒级的时间戳,它们的接口格式也在“inv_mpu.c”文件中给出, 见代码清单 43-2。 代码清单 43-10 定时服务接口(inv_mpu.c 文件) 1 /* 2 * delay_ms(unsigned long num_ms) 3 * get_ms(unsigned long *count) 4 */ 5 6 #define delay_ms Delay_ms 7 #define get_ms get_tick_count 我们为接口提供的 Delay_ms 及 get_tick_count 函数定义在 bsp_SysTick.c 文件,我们使 用 SysTick 每毫秒产生一次中断,进行计时,见代码清单 43-11。 代码清单 43-11 使用 Systick 进行定时(bsp_SysTick.c) 1 2 static __IO u32 TimingDelay; 3 static __IO uint32_t g_ul_ms_ticks=0; 4 /** 5 * @brief us 延时程序,1ms 为一个单位 6 * @param 7 * @arg nTime: Delay_ms( 1 ) 则实现的延时为 1 ms 8 * @retval 无 9 */ 10 void Delay_ms(__IO u32 nTime)
2023-02-17 11:43:35 33.8MB STM32F429 M4核
1
零死角玩转STM32—F429-初级篇.pdf文档
2022-03-26 23:20:50 8.26MB STM32F429 M4核
1
基于秉火STM32F429,本书着重讲解 F429 的外设以及外设的应用
2021-11-13 17:00:40 33.8MB STM32F429 M4核
1
四川省电赛TI杯 电赛 M4核 tm4c1294数据手册
2021-08-25 14:53:38 9.67MB TI 电赛 M4核 tm4c1294
1