发 帖  
原厂入驻New
[问答] 指针怎么作为函数参数
107 指针
分享
大家好!
我打算在一个不同的.c文件上共享两个函数之间的数据。在PSoC Creator上的所有示例中,它们都使用声明为“Extn”的变量,因此它可以在不同的.c文件上共享可能的DATABETEWEN函数。
我试图用指针作为函数参数,但好像我做错了什么。这里是我的代码的一部分:
C文件:UIT88ReByTeDATA;
UIT8 8MPU9250ALE请求(空){
I2CdMaseRead字节(MPU9250x地址,WrDATA,Read ByTeDATA);UARTURUUARTPATSHIPE(“数据是:0X”);SAMPIFF(UARTBUFRESARCII,“%X”,*ReReByTeDATA);/ /将HEX转换为ASCII UARTHARUARTPASTROST(UARTBuffRasCII);UARTHARUARTPARSTROM(“\N\R”);
}
I2CMAST.C文件:UIT8 8I2CMASTEMADRADIONTELL(UIT32地址,Uti8*子地址,UTIN 8*数据){
I2CJI2CMASTRADEBUF(地址,数据,1,I2CYI2CYMODEA完成EXEXEXXFER);
}
问题是上面的代码不起作用,但是如果我声明了Puth9250AivivRebug()函数的8*Read ByDATAN,所有的工作都很好,但是这个变量在传感器的所有变量上都是不可见的。为什么我声明函数内的变量工作?正如我所知道的指针用法,上面的代码应该工作如果我这样做:
C文件:UIT88ReByTeDATA;
UIT88MPU9250ALE请求(空){
I2CdMaseRead字节(MPU9250x地址,WrDATA,and RealByTeDATA);UARTHARUARTPATTROPE(“数据是:0X”);SAMPIFF(UARTBUFRESARCII,“%X”,*ReReByTeDATA);/ /将HEX转换为ASCII UARTHARUARTPASTROST(UARTBuffRasCII);UARTHARUARTPARSTROM(“\N\R”);
}
I2CMAST.C文件:UIT88I2CMASTORADRADIONTELL(UIT32地址,UTI8*子地址,UTIN 8*数据){
I2CJI2CMASTRADEBUF(地址,数据,1,I2CYI2CYMODEA完成EXEXEXXFER);
}
但结果是,这是行不通的。在另一个使用差异的项目中,它的效果不错,但我不知道为什么不在这里。
好像PSoC creator对指针不太好,有人能帮我吗?
非常感谢你!
约书亚
附件是我所说的完整文件代码
I2CMASTER和传感器代码
2.6 K
0
2019-9-16 11:09:10   评论 分享淘帖 邀请回答
1个回答
欢迎来到论坛,约书亚
既然已经将Read ByTeDATA定义为指针,就不能再引用它了。所以你应该写
I2CdMaseRead字节(MPU9250x地址,WrDATA,Read ByTeDATA);//NO“and”
顺便说一句:
你怎么想
UARTHUUARTPUTSING(“数据是:0x%x\n\r”,(UINT16)*Read ByTeDATA);//将十六进制转换为ASCII(%x期望一个int,而不是一个字节)。所以演员们)
PSoC Creator 3.2使用GCC作为编译器,到目前为止还没有指针已知的问题。
快乐编码
鲍勃
2019-9-16 11:23:45 评论

举报

只有小组成员才能发言,加入小组>>

365个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /10 下一条

快速回复 返回顶部 返回列表