打印

大神求救:51单片机发送字符串显示零

[复制链接]
楼主: Jinss
手机看帖
扫描二维码
随时随地手机跟帖
21
Jinss|  楼主 | 2014-9-10 16:53 | 只看该作者 回帖奖励 |倒序浏览
不过字符串全局变量使用和定义的问题还是不知道怎么处理。有前辈知道么?

使用特权

评论回复
22
Jinss|  楼主 | 2014-9-10 16:54 | 只看该作者
我刚才试了半个小时没试出来。前辈能举个具体的例子吗?

使用特权

评论回复
23
Jinss|  楼主 | 2014-9-10 16:56 | 只看该作者
我是把字符数组放在头文件中,在C文件中使用。不知道怎么用,希望前辈教下小弟。

使用特权

评论回复
24
Jinss|  楼主 | 2014-9-10 17:01 | 只看该作者
coody 发表于 2014-9-10 16:27
你开了串口中断又没有串口中断服务函数?

我只发数据,用查询方式可以吗?谢前辈不吝赐教。

使用特权

评论回复
25
wangch_sh| | 2014-9-10 17:03 | 只看该作者
变量放在C文件中。
在一个C文件中定义  unsigned char buffer[10];
在另一个C文件中定义 extern unsigned char buffer[10];

使用特权

评论回复
26
Jinss|  楼主 | 2014-9-10 17:06 | 只看该作者
wangch_sh 发表于 2014-9-10 17:03
变量放在C文件中。
在一个C文件中定义  unsigned char buffer[10];
在另一个C文件中定义 extern unsigned c ...

前辈我可不可以把全局变量放在头文件中声明?

使用特权

评论回复
27
Jinss|  楼主 | 2014-9-10 17:08 | 只看该作者
请前辈明示。

使用特权

评论回复
28
wangch_sh| | 2014-9-10 17:11 | 只看该作者
你可以试一试。我都是在C文件中声明的。

使用特权

评论回复
29
ningling_21| | 2014-9-10 17:18 | 只看该作者
Jinss 发表于 2014-9-10 17:06
前辈我可不可以把全局变量放在头文件中声明?

肯定可以,头文件中声明更常用...

使用特权

评论回复
30
Jinss|  楼主 | 2014-9-10 17:21 | 只看该作者
ningling_21 发表于 2014-9-10 17:18
肯定可以,头文件中声明更常用...

前辈能举个具体的例子吗?小弟谢谢了。

使用特权

评论回复
31
Jinss|  楼主 | 2014-9-10 17:23 | 只看该作者
wangch_sh 发表于 2014-9-10 17:11
你可以试一试。我都是在C文件中声明的。

我在头文件中用过普通的char变量,我在声明前面加了static,加其他的关键字好像不行。字符数组用这个办法不行。

使用特权

评论回复
32
wangch_sh| | 2014-9-10 17:29 | 只看该作者
我试过了,可以的。你提示什么错误?是不是空间溢出了?或者说明你是怎么声明的。

使用特权

评论回复
33
Jinss|  楼主 | 2014-9-10 17:39 | 只看该作者
multiple definition of……

使用特权

评论回复
34
Jinss|  楼主 | 2014-9-10 17:41 | 只看该作者
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
    SYMBOL:  STATE1DATA

使用特权

评论回复
35
wangch_sh| | 2014-9-10 17:42 | 只看该作者
加extern了吗?声明了一次还是多次?如果声明了多次,要用条件编译语句,确保只编译一次。

使用特权

评论回复
36
Jinss|  楼主 | 2014-9-10 17:43 | 只看该作者
这是在头文件中:
extern unsigned char state1data[7]={"STATE1"};
在C文件中:
unsigned char state1data[7];

使用特权

评论回复
37
Jinss|  楼主 | 2014-9-10 17:45 | 只看该作者
或者这样:
头文件:
unsigned char state1data[7]={"STATE1"};
C文件:
extern unsigned char state1data[7];

使用特权

评论回复
38
Jinss|  楼主 | 2014-9-10 17:47 | 只看该作者
前辈条件编译怎么操作呀?

使用特权

评论回复
39
Jinss|  楼主 | 2014-9-10 17:50 | 只看该作者
刚才也试了一下:static在头文件中用没有问题。extern 不行。

使用特权

评论回复
40
wangch_sh| | 2014-9-10 17:51 | 只看该作者
我试的没问题呀!
你第一种肯定不行,要在定义的时候初始化。
对于第二种情况:
是不是这样:你在第一个头文件里定义,在第一个C文件里声明。
如果是这样的话,就没必要了。
你只需要在其他C文件对应的头文件里声明就可以了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则