参数与类型的参数不兼容

2019-07-20 07:16发布

大家好,程序是从8位单片机移植上来的,错误指示为const u8与I2C_Write的指针u8*不匹配:请教一下怎么修改。错误信息:..HARDWAREMY9XX1MY9XX1.c(104): error:  #167: argument of type "const u8 (*)[4]" is incompatible with parameter of type "u8 *"
          SX_I2C_Write(addr,&sx_reg_val[i-1]);  
错误的子函数程序:
void Init_SX(void)
    {

    u8 i;
    u8 addr;

        for(i=0;i<=INIT_FAIL_TIME;i++)//INIT_FAIL_TIME=20
        {
                delay_ms(20);
                SX_I2C_Read(0x10,reg_val);//ID
                if(reg_val[3] != SX_Chip_ID) continue;
                break;
        }

        if(reg_val[3] != SX_Chip_ID)return; //again
       
        for(i = 1;i <= 48; i++)
         {  
       if(i <= 12)
          addr = i-1;
       else if( i <= 16)
          addr = 3 + i;
       else if( i <= 27)
          addr = 8 + i;
       else if( i <= 32)
          addr = 9 + i;      
       else if( i <= 48)
          addr = 15 + i;      
        SX_I2C_Write(addr,&sx_reg_val[i-1]);  
    }

                        Write_SX_U_Band_RegVal();       
                        SX_Reset_Chip();
                        SX_Trigger();
}
另外一个子函数程序:
const u8 sx_reg_val[48][4] =
{
0xfC,0x4f,0x04,0x00,    //REG0                         

            .
            .
            .
0x00,0x0F,0x00,0x00,    //REG3F
}

SX_I2C_Write的子函数程序:
void SX_I2C_Write(u8 reg,u8 *pBuf)
{
        u8 i;

        if(reg <= 0x0b)      
    {
        analog_reg_val[reg][0] = pBuf[0];
        analog_reg_val[reg][1] = pBuf[1];
        analog_reg_val[reg][2] = pBuf[2];
        analog_reg_val[reg][3] = pBuf[3];
    }

        IIC_Start();
        IIC_Send_Byte(SX_Chip_ID);

        reg = reg<<1;
        IIC_Send_Byte(reg);

        for(i=0;i<4;i++)
        {
                IIC_Send_Byte(pBuf[i]);
        }
        IIC_Stop();
               
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。