标题: 请教一个C语言的问题:函数放在不同文件里引起的问题 [打印本页]

作者: pcf2000    时间: 2021-6-24 10:32
标题: 请教一个C语言的问题:函数放在不同文件里引起的问题
今天出现一个奇怪的问题,一个写EEPROM的写函数放在其他文件里调用会导致写数据不成功。放在main函数里调用则可以写进数据。这是什么意思,以前也遇到过类似的问题。。。。
看了一下编译结果,也编译进去,没被优化啊

作者: 赵庚赓    时间: 2021-6-24 10:49
可以看看这个,http://www.cnblogs.com/lycstronger/p/4195559.html
作者: 黄youhui    时间: 2021-6-24 10:51
会不会是中断导致时序错乱,写数据时把所有中断关了。
作者: glinfei    时间: 2021-6-24 11:32
你写不成功,是写不了还是写的不对?
写的不对:就注意多个C文件编译时,全局变量要加extern。
写不了:可能是函数声明问题。
如果其他方式解决的,别忘说一下咋解决的啊。
作者: ShadowOfNothing    时间: 2021-6-24 11:47
定义过的函数在其他文件使用要先引用声明,就像使用memset()库函数时 先用引用头文件string.h
作者: ShadowOfNothing    时间: 2021-6-24 11:48
另外单片机内部的EEPROM,写入前必须先擦除扇区才能写入成功
作者: liuzx66    时间: 2021-6-24 14:19
函数声明原型是不是匹配,同一个名字被多个函数使用
作者: pcf2000    时间: 2021-6-24 17:40
本帖最后由 pcf2000 于 2021-6-24 17:43 编辑
glinfei 发表于 2021-6-24 11:32
你写不成功,是写不了还是写的不对?
写的不对:就注意多个C文件编译时,全局变量要加extern。
写不了: ...

查找了一下原因,目前发现是,执行了读数据操作,紧接着后面写数据操作就不能写进数据了;前面不执行读数据操作,则后面可以写进数据;但没找到问题在哪里!
作者: pcf2000    时间: 2021-6-24 17:41
查找了一下原因,目前暂时发现是,执行了读数据,紧接着后面写数据就不能写进数据,但没找到问题在哪里!,有点奇怪
作者: pcf2000    时间: 2021-6-24 17:41
ShadowOfNothing 发表于 2021-6-24 11:48
另外单片机内部的EEPROM,写入前必须先擦除扇区才能写入成功

外部的EEPROM  IC
作者: 菇凉犹在    时间: 2021-6-24 18:03
那个调用的时候可以会因为你变量的设置原因,部分变量不能被用
作者: pcf2000    时间: 2021-6-25 10:11
菇凉犹在 发表于 2021-6-24 18:03
那个调用的时候可以会因为你变量的设置原因,部分变量不能被用

前面执行了一次读数据操作,后面的写数据操作就不成功,调试跟踪了一下,发现是在写数据操作过程,写地址应答出错退出了
做了一个这样的测试,前面的读数据操作执行2次,则后面写数据就成功了,没搞懂怎么回事,难道是时序有问题?!
作者: yzwzfyz    时间: 2021-6-25 14:24
先读通EEPROM的操作原理。
作者: china_liu    时间: 2021-6-25 16:26
函数掉用子函数要放在同一个根目录下,不然就会出现掉用错误




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1