从不兼容的指针类型 [-Wincompatible-pointer-types] 类型传递 'HAL_I2C_Master_Transmit' 的参数 3

Type passing argument 3 of 'HAL_I2C_Master_Transmit' from incompatible pointer type [-Wincompatible-pointer-types]

我正在尝试将 HAL_I2C_Master_Transmit 与如下所示的代码一起使用:

uint8_t *pData;
pData[0]=0xF3;

if (HAL_I2C_Master_Transmit(&hi2c1, 0x40<<1, &pData, 1, 100) != HAL_OK) {...}

我收到以下警告:

Type passing argument 3 of 'HAL_I2C_Master_Transmit' from incompatible pointer type [-Wincompatible-pointer-types]

我做错了什么?

而不是 &pData 您需要通过 pData。现在你将指针传递给指针,它当然不兼容。也是错的。

所以函数调用应该是:

if (HAL_I2C_Master_Transmit(&hi2c1, 0x40<<1, pData, 1, 100) != HAL_OK) {...}

虽然您没有显示 HAL_I2C_Master_Transmit 函数的 definition/declaration 是什么,但看起来(从 quick Google search 来看)第三个参数应该是 uint8_t*.

在你提供的代码中,pData 已经是这样的指针,所以你不需要传递它的地址 - 这使得参数成为 指针到指针.

因此,按照给定的声明,只需从您的调用中删除 &

if (HAL_I2C_Master_Transmit(&hi2c1, 0x40<<1, /*&*/pData, 1, 100) != HAL_OK) {...}