函数中数组调用问题
下面的函数在main里怎么调用呀。是FIFO_Read(0x07,Word_Data[],0x20);吗?总是出错..\USER\main.c(72): error:#29: expected an expressionvoid FIFO_Read(u8 Register_Address,u16Word_Data[],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 = (((u16)data1 << 8) | data2);//
data1 = i2c_ReadByte();
i2c_Ack();
data2 = i2c_ReadByte();
if(1==no)
i2c_NAck();
else
i2c_Ack();
Word_Data = (((u16)data1 << 8) | data2);
no--;
i++;
}
i2c_Stop();
cmd_fail:
i2c_Stop();
} void FIFO_Read(u8 Register_Address,u16Word_Data[],u8 count)
FIFO_Read(0x07,Word_Data[],0x20)
看下来中间的参数有点问题吧。
二维数组呢 显然不能用数组名字了
定义u16 Word_Data了么?试试如下调用
FIFO_Read(0x07,&Word_Data,0x20)
其实还有另外一种修改方法,上面是修改调用,下面就是修改实现。
试试这个
void FIFO_Read(u8 Register_Address,u16 (* Word_Data),u8 count)
本帖最后由 toofree 于 2018-4-30 23:27 编辑
表达式错误。
调用时要传指针吧。
你写个FIFO_Read(0x07,Word_Data[],0x20);,表达式不对呀,Word_Data[]这能这么写,即便写成Word_Data也只是其它一个元素,是不是应该写成FIFO_Read(0x07,Word_Data,0x20); 一把传进去。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void fun(int x[])
{
int i, j;
for (i = 0; i < 2; i++)
{
for (j = 0; j < 3; j++)
{
printf("%d ", x);
}
printf("\n");
}
}
int main()
{
int a = {1, 2, 3, 4, 5, 6};
fun(a);
return 0;
}
与龙共舞 发表于 2018-4-30 19:46
void FIFO_Read(u8 Register_Address,u16Word_Data[],u8 count)
FIFO_Read(0x07,Word_Data[],0x20) ...
谢谢,暂时不试了,着急做项目,我把数组的形参去掉了,函数内部做2个循环往数组里写,已经可以了 参数好复杂,把自己整晕了。
页:
[1]