OpenEdv-开源电子网

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

全局变量的问题

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2012-2-16
在线时间
0 小时
发表于 2012-2-26 20:02:44 | 显示全部楼层 |阅读模式
请教下原子哥,怎么设置一个全局变量,使其可以用于timer.c和exti.c中,
例如:
在exti.c中:
void EXTI0_IRQHandler(void)
{
 num++;
 EXTI->R=1<<0;  //清除LINE0上的中断标志位 
}
然后在timer.c中:
void TIM3_IRQHandler(void)
{
  if(TIM3->SR&0X0001)//溢出中断
  {
   delay_ms(60000);
   printf("\n红色的脉冲数为:%d\n",num);
   delay_ms(10000);
   num=0;
  }
   TIM3->SR&=~(1<<0);
}
我试过在timer.h中加 int num;
或者在int main()的上面写都会报错:
..\HARDWARE\EXTI\exti.c(9): error:  #20: identifier "num" is undefined
或者
test.axf: Error: L6200E: Symbol num multiply defined (by timer.o and test.o).
请问下该怎么实现这个变量的定义
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-2-26 21:01:52 | 显示全部楼层
回复【楼主位】jingjing900420:
---------------------------------
在一个.c文件里面定义.
然后在头文件里面用extern 关键字申明.
然后其他.c文件要使用的时候,包含这个头文件,就可以了.
注意,头文件里面不能给变量赋值!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 1 反对 0

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2012-2-16
在线时间
0 小时
 楼主| 发表于 2012-2-27 09:31:09 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
解决了,谢谢原子哥
回复 支持 反对

使用道具 举报

0

主题

16

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2013-9-17
在线时间
0 小时
发表于 2014-3-14 14:14:30 | 显示全部楼层
有帮助到的就顶一下
you know.
回复 支持 反对

使用道具 举报

1

主题

93

帖子

0

精华

初级会员

Rank: 2

积分
194
金钱
194
注册时间
2014-3-12
在线时间
9 小时
发表于 2014-3-15 14:13:20 | 显示全部楼层
建议楼主在定义中断用到的变量时,最好加上volatile修饰。
曾经、曾经...
我就因为中断用的变量没加volatile,被搞得死去活来
还怀疑驱动有问题。。。
功夫再高、也怕羊刀
回复 支持 反对

使用道具 举报

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
发表于 2014-3-15 16:20:47 | 显示全部楼层
volatile定义也被弄过好几次,主函数与中断里都使用同一个变量时一定要定义成volatile。
让我们的思维驾驭在电的速度之上!
回复 支持 反对

使用道具 举报

9

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2014-8-11
在线时间
0 小时
发表于 2014-9-6 18:01:10 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
能具体举一个例子吗,在一个.c文件里面定义要用extern吗?在头文件里面用extern 关键字申明是什么意思?想要在终端里面用有什么特殊要求吗?急急急!!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-9-6 22:11:01 | 显示全部楼层
回复【7楼】zhanjian32:
---------------------------------
你自己试试就知道了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2014-12-17
在线时间
16 小时
发表于 2014-12-17 21:11:08 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
看到原子哥的解答,我的问题也迎刃而解了,谢谢原子哥!
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2015-5-29
在线时间
1 小时
发表于 2015-7-11 20:00:07 | 显示全部楼层
volatile  这个是什么变量呀
回复 支持 反对

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2015-7-26
在线时间
0 小时
发表于 2015-9-6 20:17:30 | 显示全部楼层
回复【3楼】jingjing900420:
---------------------------------
请问怎么解决的?
回复 支持 反对

使用道具 举报

74

主题

334

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
436
金钱
436
注册时间
2015-5-28
在线时间
144 小时
发表于 2015-9-30 10:52:47 | 显示全部楼层
good  good  good
最近爱上了stm32
回复 支持 反对

使用道具 举报

2

主题

15

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2017-7-28
在线时间
12 小时
发表于 2017-8-14 10:23:19 | 显示全部楼层
我也做做全局变量,用到了,顶一下
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2017-8-1
在线时间
9 小时
发表于 2017-8-14 10:29:32 | 显示全部楼层
昨天 我也是因为全局变量的问题 搞了好久
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2017-8-1
在线时间
9 小时
发表于 2017-8-14 10:30:43 | 显示全部楼层
全局变量 在主程序里定义  中断里用到之前 声明下extern  就可以了
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2017-8-14
在线时间
0 小时
发表于 2017-8-14 16:30:48 | 显示全部楼层
够了 发表于 2015-7-11 20:00
volatile&nbsp;&nbsp;这个是什么变量呀

这个的意思是告诉编译器每次都要读取一次volatile修饰的变量 避免被编译器优化掉
回复 支持 反对

使用道具 举报

2

主题

16

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
236
金钱
236
注册时间
2018-7-25
在线时间
46 小时
发表于 2018-11-18 19:50:45 | 显示全部楼层
马克收藏
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-21 23:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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