结构体申明:
struct HMI_PAGE{
u8 SlaveAddr;
u8 FunID;
uint16_t StartAddr;
u8 Number;
};
static const struct HMI_PAGE HMIpage01[READ_PAGE01_CNT]=
{
{0x01,0x03,136,2},
{0x01,0x03,164,2},
{0x01,0x03,168,1}
};
函数:
void ReadSlave(struct HMI_PAGE HMI_Page)
{
switch(HMI_Page.FunID)
{
case 0x03:Read_Slave03(HMI_Page.SlaveAddr,HMI_Page.StartAddr,HMI_Page.Number);
break;
case 0x01:Read_Slave01(HMI_Page.SlaveAddr,HMI_Page.StartAddr,HMI_Page.Number);
break;
default:
break;
}
}
void PPPReadSlave(struct HMI_PAGE *HMI_Page)
{
switch(HMI_Page->FunID)
{
case 0x03:Read_Slave03(HMI_Page->SlaveAddr,HMI_Page->StartAddr,HMI_Page->Number);
break;
case 0x01:Read_Slave01(HMI_Page->SlaveAddr,HMI_Page->StartAddr,HMI_Page->Number);
break;
default:
break;
}
}
采用值传递没问题:ReadSlave(HMIpage01);
采用地址传递有问题:PPPReadSlave(&HMIpage01);
keil 编译:提示类型不一样
..\user\K600.C(882): error: #167: argument of type "const struct HMI_PAGE *" is incompatible with parameter of type "struct HMI_PAGE *"
|