下面是出错误的那块代码:
static int probeDaisyChain (vdaaChanType *pVdaa){
int i=0;
WriteReg(pVdaaHW,BROADCAST,PCMRX_CNT_LO,0x23);
while ((ReadReg(pVdaaHW,(uInt8)i++,PCMRX_CNT_LO) == 0x23)&&(i<=16));
return i-1;
}
出错的位置:WriteReg(pVdaaHW,BROADCAST,PCMRX_CNT_LO,0x23);
出错的提示:
VDAA.C(105): error C212: indirect call: parameters do not fit within registers
在keil里面出现这样的错误!!?为什么呢!
答案:2 悬赏:70 手机版
解决时间 2021-04-12 05:18
- 提问者网友:富士山上尢
- 2021-04-11 11:33
最佳答案
- 五星知识达人网友:荒野風
- 2021-04-11 12:26
应该是函数调用出了问题,参数的个数大于传递参数的寄存器数而出的错,也就是四个参数太多了,超过了能接受的范围吧。我采用比较笨的方法解决的:把你的WriteReg(a,b,c,d)函数拆分为两个函数实现其功能;当然有别的采用函数指针的方法,那个我也不太清楚怎么用。
全部回答
- 1楼网友:玩家
- 2021-04-11 13:06
看你的信息,你那个是在ni.c文件里,也就是说,你的是c语言文件?
但是你有这么一句:
parser->handledatavalue( 0, parser_code_raw_signal, 2,
parser->payload,
parser->customdata
);
显而易见,你的那个parser是一个结构体的指针,而你的这个结构体里有函数:
handledatavalue(,,,)
是这样的,c语言里,结构体是不允许有函数的,c语言的结构体里不允许有函数的存在,c++里可以,c语言不行.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯