OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8103|回复: 18

extern 与 struct 的一些问题,求解

[复制链接]

8

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2012-10-16
在线时间
0 小时
发表于 2014-4-5 18:07:39 | 显示全部楼层 |阅读模式
  跑的ucos 想在文件间传数据  由于数据比较多,而且好几种类型 所以用了结构体 
在main.c 中开头处定义了    
struct AllData Data;

在app.h中定义了
struct AllData
{
int ....
float ...
....
};
extern struct 
 AllData Data;
main.c 和app.c都包含了 app.h
但是app.c中使用Data中的数据一直为0 或者其它的数。

之后我又在main.c 中定义了
float tmpx=10.1;
app.h中又加了
extern float tmpx;
这个情况下,在app.c中能读到Data的数据了,同时 tmpx的值也能读到。
请问各位 这是怎么回事。不明白为什么再加了一个之后 才能读到Data的值。
怎么样才能直接读到结构体中的数据啊?  
急求























正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-4-5 19:21:57 | 显示全部楼层
回复【楼主位】polariswolf:
---------------------------------
你的app.c和main.c是怎么使用Data的?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

8

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2012-10-16
在线时间
0 小时
 楼主| 发表于 2014-4-8 09:10:55 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
main.c的一个函数中 
               if(key==1) {Data.Bt+=1.6;  }
 if(key==2)  Data.Dh+=1;
 if(key==4)  {Data.Bt-=1.2; Data.Dh-=1;}
app.c的一个函数中
     Lcd_printf(10,140,BLACK,WHITE,0,"温度:%2.1f℃ 湿度:%2d%% 压强:%3.2fKPa ",(Data.Bt+Data.Dt)/2.0,Data.Dh,Data.Bp);
另外一个函数
void Data_Init(void)
{
 
    
   Data.Ax=10.1;  // 加速度X轴垂角
   Data.Ay=10.2;
 Data.Az=10.2;
 Data.Bt=25.1;  //bmp085温度
 Data.Bp=101.25;  //bmp085压强
 Data.Dt=25;  
   Data.Dh=65;
 Data.AdcLight = 1032; //通道10 返回4次采样的平均值
 Data.AdcMQ    = 1023; //通道15   
 Data.AdcFire  = 1024; // 通道14
 Data.AdcOut   = 1024; // 通道11

}
void Data_Init(void);在main中执行  
就是一个简单的调用和在屏幕上显示。想测试一下,结果不行,我在网上看了几种方法,但是都没有反应啊、
回复 支持 反对

使用道具 举报

8

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2012-10-16
在线时间
0 小时
 楼主| 发表于 2014-4-8 09:12:43 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥, extern 和 struct 在一起应该怎么使用啊?  
还有,一般情况下在ucos中都是怎么在不同文件中传送数据的啊?  用邮箱,消息队列吗?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-4-8 09:57:04 | 显示全部楼层
回复【3楼】polariswolf:
---------------------------------
你仿真一下看看。
回复【4楼】polariswolf:
---------------------------------
在一起使用没问题,直接写就是了 
不同任务吧?
可以用邮箱,队列,都可以。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

8

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2012-10-16
在线时间
0 小时
 楼主| 发表于 2014-4-8 10:02:01 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
但是extern struct使用的时候 必须再多定义个extern的变量啊,这样数据的读取才没有问题啊。
不知道只用extern的结构体怎么用才能成功
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-4-8 10:12:57 | 显示全部楼层
回复【6楼】polariswolf:
---------------------------------
不解你什么意思,你看下我们的触摸屏实验,LCD结构体,就用了extern
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

8

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2012-10-16
在线时间
0 小时
 楼主| 发表于 2014-4-8 10:13:20 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
原子哥,float double也可以用邮箱和消息队列吗?怎么用呢?
回复 支持 反对

使用道具 举报

8

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2012-10-16
在线时间
0 小时
 楼主| 发表于 2014-4-8 10:14:00 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
恩 我仔细看一下
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-4-8 10:18:57 | 显示全部楼层
回复【8楼】polariswolf:
---------------------------------
用指针传递
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

8

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2012-10-16
在线时间
0 小时
 楼主| 发表于 2014-4-8 11:12:35 | 显示全部楼层
回复【10楼】正点原子:
---------------------------------
用全局变量的结构体我弄好了,似乎不是数据的问题,我用的那个函数似乎有点BUG。

用指针传递的方法 我大概能懂事怎么个意思,但是写了几下子没有调试通过。
原子哥,使用指针传递的方法应该具体怎么写呢?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-4-8 11:43:08 | 显示全部楼层
回复【11楼】polariswolf:
---------------------------------
指针指向一个数组,然后传递数组的首地址。
你的结构体也可以用这种方式啊。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

8

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2012-10-16
在线时间
0 小时
 楼主| 发表于 2014-4-8 12:16:02 | 显示全部楼层
回复【12楼】正点原子:
---------------------------------
恩 我明白你的意思了。 
 谢谢原子哥耐心的解答!
回复 支持 反对

使用道具 举报

8

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2012-10-16
在线时间
0 小时
 楼主| 发表于 2014-4-8 15:22:19 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,我找到我全局 结构体没法数据没法正常显示的错误了。  
似乎是 包含的头文件,应该是 #include<stdio.h> 结果我写成了 #include"stdio.h"
致使我自己写的一个lcd屏幕打印的函数出现了一点小问题。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-4-8 16:59:02 | 显示全部楼层
回复【14楼】polariswolf:
---------------------------------
额...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

8

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2012-10-16
在线时间
0 小时
 楼主| 发表于 2014-4-9 10:57:56 | 显示全部楼层
回复【15楼】正点原子:
---------------------------------
好吧,原子哥,似乎又不是那个问题,数据都正常 一会灵一会不灵
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2013-10-2
在线时间
2 小时
发表于 2014-4-23 20:16:31 | 显示全部楼层
http://www.amobbs.com/archiver/tid-5102875.html

参考一下这个贴。
回复 支持 反对

使用道具 举报

8

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2012-10-16
在线时间
0 小时
 楼主| 发表于 2014-4-25 15:24:53 | 显示全部楼层
回复【17楼】caihoo:
---------------------------------
谢谢你,我也是按照这个做的,后来出现的问题,似乎不是由全局变量导致的,数据是正确的,但是不知道为什么就是显示时出错,不过现在这个问题已经被我用其它的方法规避了
回复 支持 反对

使用道具 举报

8

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2013-9-19
在线时间
16 小时
发表于 2014-8-29 22:11:20 | 显示全部楼层
回复【18楼】polariswolf:
---------------------------------
哥们 能看看你的程序吧 我的意志读不出来数据
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-2 22:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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