我不知道为什么下面的代码会给出无效的初始化程序错误。有什么不对吗?
void ssd_write(uint8_t data){
uint8_t txBuffer[1] = data; <--- error
i2cTransaction.slaveAddress = 0x78;
i2cTransaction.writeBuf = txBuffer;
i2cTransaction.writeCount = 1;
i2cTransaction.readBuf = NULL;
i2cTransaction.readCount = 0;
I2C_transfer(i2c, &i2cTransaction);
I2C_close(i2c);
}
答案 0 :(得分:6)
应该是
uint8_t txBuffer[1] = {data};
Yoou正在声明一个包含1个元素的数组并初始化它。您应该知道,在这种情况下,您将writeBuf
分配给指向数组第一个元素的衰减指针。
否则,您只是通过尝试将变量分配给声明的数组来执行无效操作。
或者更简单地说你可能想要(因为有一个数组只存储一个值是不合逻辑的 - 你可以,但这不是我们做的事情)
uint8_t txBuffer = data;
执行此操作后,如果需要i2cTransaction.writeBuf = &txBuffer;
,则可能需要执行uint8_t*
。