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

函数中数组调用问题

[复制链接]
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个回答
与龙共舞 回答时间: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

查看全部评分

toofree 回答时间: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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版