STM32MP1 自举程序编程:USB DFU/USART 协议全解析
STM32大神笔记,超详细单片机学习汇总资料
实战经验 | 如何配置STM32MP257的RMII Switch
简单实用!STM32硬件错误的调试技巧
OpenSTLinux 6.1发布:M33-TD加持+安全升级,STM32MPU开发效率翻倍!
STM32MP135 MP157 MP257 CoreMark移植&&跑分对比&&多核心负载不均衡问题排查与解决
STM32系列芯片之间相互移植注意事项
STM32如何成为现代科技的隐形引擎
STM32--STM32 微控制器详解
大神都是怎么学习STM32的,我也跟着学
微信公众号
手机版
#include <string.h>
地址可以自己随便写一个。
HAL_I2C_Master_Transmit(&hi2cx,SlaveAddress,®_Address,1,5000)这个函数最后会发出一个STOP命令,但是MPU6050在读寄存器时,中间是不能有STOP的。
//**************************************) ?9 a- o4 q& s6 ?
//从I2C设备读取一个字节数据3 N. a% n1 v3 V4 m
//**************************************7 S7 y, T z9 t0 @4 C9 u& B
uint8_t Single_ReadI2C(uint8_t REG_Address)% a+ p) f+ ~: E; j/ ^1 K
{
uint8_t REG_data;
while(HAL_I2C_Master_Transmit(&hi2cx,SlaveAddress,®_Address,1,5000) != HAL_OK)
{/ J9 ]) d5 n/ r! K; ~6 w V1 Z
if(HAL_I2C_GetError(&hi2cx) != HAL_I2C_ERROR_AF)
{}
}# j6 ~: P& Q8 O6 w/ y
3 D$ K& u/ ~2 U' A r3 E4 q9 {
if(HAL_I2C_Master_Receive(&hi2cx,SlaveAddress+1,®_data,1,5000) != HAL_OK)4 j7 N0 ^% l4 K2 N. C
{
if(HAL_I2C_GetError(&hi2cx) != HAL_I2C_ERROR_AF)
{}! P1 p* J6 a" O
}" L9 _, M- d9 k5 f; I! S% P3 w
return REG_data;% Q( t" S1 e; I3 q: K
}
确实如何所说,但是我用上面的代码当时测试是可以工作的。: k1 c: Y& ~" b! P
; h" d5 ^. ?# P9 Y' i, l9 ^- J- N
使用HAL_I2C_Mem_Read应该会更好。