OpenEdv-开源电子网

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

外部中断值传递问题

[复制链接]

7

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2016-7-26
在线时间
9 小时
发表于 2016-7-26 11:07:32 | 显示全部楼层 |阅读模式
1金钱
我用的正点原子的迷你版,初学者,为嘛我在外部中断的响应函数中设置静态标志位却无法传到main函数中进行处理,我把标志位删了又正常了。

最佳答案

查看完整内容[请看2#楼]

1、全局变量 2、指针 3、写一个函数,return需要传递的值,在main中调用这个函数
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

538

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3371
金钱
3371
注册时间
2015-1-7
在线时间
794 小时
发表于 2016-7-26 11:07:33 | 显示全部楼层
1、全局变量
2、指针
3、写一个函数,return需要传递的值,在main中调用这个函数
机器生汇编,汇编生B,B生C,C生万物.... 经过长期对C语言的研究,目前只有两个方面不懂:这也不懂,那也不懂
https://github.com/ianhom
回复

使用道具 举报

9

主题

538

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3371
金钱
3371
注册时间
2015-1-7
在线时间
794 小时
发表于 2016-7-26 11:24:59 | 显示全部楼层
static修饰的变量仅该文件可见,如果main不在这个文件中的话,是看不到这个变量的,即使是同名变量也会被认为是两个不同的变量。不知道这个属不属于你的情况
回复

使用道具 举报

7

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2016-7-26
在线时间
9 小时
 楼主| 发表于 2016-7-26 11:36:41 | 显示全部楼层
ianhom 发表于 2016-7-26 11:24
static修饰的变量仅该文件可见,如果main不在这个文件中的话,是看不到这个变量的,即使是同名变量也会被认 ...

那么怎么把标志位传过去呢
回复

使用道具 举报

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
发表于 2016-7-26 12:25:32 | 显示全部楼层
在变量定义前加入volatile,中断和main函数同事调用必须加入这个C语言关键字,否则会被编译器优化出现中断改变值而main却不变的想象。
让我们的思维驾驭在电的速度之上!
回复

使用道具 举报

10

主题

254

帖子

0

精华

高级会员

Rank: 4

积分
594
金钱
594
注册时间
2015-10-17
在线时间
145 小时
发表于 2016-7-26 12:32:11 | 显示全部楼层
在主函数定义定义变量,然后再中断的.c 或者 .h 文件中用extern 声明这个变量,这样你在主函数中修改变量值,中断里面的值也会做出相应的修改。
开着单片机翱翔在天空
回复

使用道具 举报

7

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2016-7-26
在线时间
9 小时
 楼主| 发表于 2016-7-26 13:38:32 | 显示全部楼层
原_子_哥门徒 发表于 2016-7-26 12:32
在主函数定义定义变量,然后再中断的.c 或者 .h 文件中用extern 声明这个变量,这样你在主函数中修改变量值 ...

但是我想要中断里面的值改变了,main函数里的值也相应改变
回复

使用道具 举报

7

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2016-7-26
在线时间
9 小时
 楼主| 发表于 2016-7-26 13:39:45 | 显示全部楼层
ianhom 发表于 2016-7-26 11:07
1、全局变量
2、指针
3、写一个函数,return需要传递的值,在main中调用这个函数

中断函数的类型没有返回值吧,全局变量怎么搞
回复

使用道具 举报

6

主题

104

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
436
金钱
436
注册时间
2015-12-11
在线时间
53 小时
发表于 2016-7-26 13:52:01 | 显示全部楼层
定义一个全局变量试试,就是在main函数外面定义一个volatile变量
Try again and there is nothing left to say.
回复

使用道具 举报

9

主题

538

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3371
金钱
3371
注册时间
2015-1-7
在线时间
794 小时
发表于 2016-7-26 14:19:40 | 显示全部楼层
小白菜666 发表于 2016-7-26 13:39
中断函数的类型没有返回值吧,全局变量怎么搞

不是通过中断返回flag(也没法再main中调用中断处理函数),而是再写一个函数,这个函数只有一个return flag语句。这样类似于这个变量是只读的,模块化中经常用到。
全局变量的方法可以参考大家关于volatile的回复
机器生汇编,汇编生B,B生C,C生万物.... 经过长期对C语言的研究,目前只有两个方面不懂:这也不懂,那也不懂
https://github.com/ianhom
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-12 07:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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