你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

函数中数组调用问题

[复制链接]
hrbwangning 提问时间:2018-4-30 15:33 /
下面的函数在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();
}
收藏 评论4 发布时间:2018-4-30 15:33

举报

4个回答
GKoSon 回答时间:2018-4-30 19:46:04
void FIFO_Read(u8 Register_Address,u16  Word_Data[][2],u8 count)
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)

评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

七哥 回答时间:2018-4-30 23:23:05
本帖最后由 toofree 于 2018-4-30 23:27 编辑

表达式错误。
调用时要传指针吧。
你写个FIFO_Read(0x07,Word_Data[][2],0x20);,表达式不对呀,Word_Data[][2]这能这么写,即便写成Word_Data[x][2]也只是其它一个元素,是不是应该写成FIFO_Read(0x07,Word_Data,0x20); 一把传进去。

傲游截图20180430232638.jpg

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>

  4. void fun(int x[][3])
  5. {
  6.     int i, j;

  7.     for (i = 0; i < 2; i++)
  8.     {
  9.         for (j = 0; j < 3; j++)
  10.         {
  11.             printf("%d ", x[i][j]);
  12.         }
  13.         printf("\n");
  14.     }
  15. }

  16. int main()
  17. {
  18.     int a[2][3] = {1, 2, 3, 4, 5, 6};

  19.     fun(a);

  20.     return 0;
  21. }
复制代码


评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

hrbwangning 回答时间:2018-4-30 23:52:03
与龙共舞 发表于 2018-4-30 19:46
void FIFO_Read(u8 Register_Address,u16  Word_Data[][2],u8 count)
FIFO_Read(0x07,Word_Data[][2],0x20) ...

谢谢,暂时不试了,着急做项目,我把数组的形参去掉了,函数内部做2个循环往数组里写,已经可以了
pythonworld 回答时间:2018-5-1 06:02:32
参数好复杂,把自己整晕了。

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版