下面的函数在main里怎么调用呀。是FIFO_Read(0x07,Word_Data[][2],0x20);吗?总是出错..\USER\main.c(72): error: #29: expected an expression void FIFO_Read(u8 Register_Address,u16 Word_Data[][2],u8 count) { u8 i=0; u8 no = count; u8 data1, data2; i2c_Start(); i2c_SendByte(WR_address | I2C_WR); if (i2c_WaitAck() != 0) { goto cmd_fail; /* EEPROMÆ÷¼þÎÞÓ¦´ð */ } i2c_SendByte((uint8_t)Register_Address); if (i2c_WaitAck() != 0) { goto cmd_fail; } i2c_Start(); i2c_SendByte(WR_address | I2C_RD); if (i2c_WaitAck() != 0) { goto cmd_fail; } while (no) { data1 = i2c_ReadByte(); i2c_Ack(); data2 = i2c_ReadByte(); i2c_Ack(); Word_Data[i][0] = (((u16)data1 << 8) | data2); // data1 = i2c_ReadByte(); i2c_Ack(); data2 = i2c_ReadByte(); if(1==no) i2c_NAck(); else i2c_Ack(); Word_Data[i][1] = (((u16)data1 << 8) | data2); no--; i++; } i2c_Stop(); cmd_fail: i2c_Stop(); } |
FIFO_Read(0x07,Word_Data[][2],0x20)
看下来中间的参数有点问题吧。
二维数组呢 显然不能用数组名字了
定义u16 Word_Data[2][2]了么?试试如下调用
FIFO_Read(0x07,&Word_Data[0][0],0x20)
其实还有另外一种修改方法,上面是修改调用,下面就是修改实现。
试试这个
void FIFO_Read(u8 Register_Address,u16 (* Word_Data)[2],u8 count)
评分
查看全部评分
表达式错误。
调用时要传指针吧。
你写个FIFO_Read(0x07,Word_Data[][2],0x20);,表达式不对呀,Word_Data[][2]这能这么写,即便写成Word_Data[x][2]也只是其它一个元素,是不是应该写成FIFO_Read(0x07,Word_Data,0x20); 一把传进去。
评分
查看全部评分
谢谢,暂时不试了,着急做项目,我把数组的形参去掉了,函数内部做2个循环往数组里写,已经可以了