中断函数可以返回一个值吗

[复制链接]
5248|17
 楼主| 叶覃 发表于 2017-2-15 15:59 | 显示全部楼层 |阅读模式
中断函数可以返回一个值吗,中断函数可以写return这样的函数吗
mdk55555 发表于 2017-2-17 08:58 | 显示全部楼层
好像没有见过这样写程序的,中断函数不被调用,返回没有意义的
haokeer 发表于 2017-2-17 09:08 | 显示全部楼层
这个还真没有试过,你试着写return看看会不会报错呢
xiaolong12 发表于 2017-2-19 21:33 | 显示全部楼层
中断处理函数不能有输入参数也不能有函数返回。因为中断都是些硬件自动调用,没有程序去给他传递参数,也没有硬件去接收参数。
喵喵小星人 发表于 2017-2-19 21:40 | 显示全部楼层
xiaolong12 发表于 2017-2-19 21:33
中断处理函数不能有输入参数也不能有函数返回。因为中断都是些硬件自动调用,没有程序去给他传递参数,也没 ...

那么中断函数如何传参数呢?
rmbass 发表于 2017-2-20 21:32 | 显示全部楼层
喵喵小星人 发表于 2017-2-19 21:40
那么中断函数如何传参数呢?

一般都是通过全局变量方式。不过为了避免中断函数重入,我们可以在进入中断服务函数之后将中断关闭,处理完后再开中断。
maninman1981 发表于 2017-2-20 21:37 | 显示全部楼层
中断服务函数带不带形参和返回值主要是看中断是发生在裸机上还是实时系统中。
冰是睡着的冰 发表于 2017-2-22 22:09 | 显示全部楼层
中断不能压栈,所以不能有返回值,如果能压栈的话很快内存空间没了..并且中断特点就是在任何时候进行的并且保护现场的,如果要记住入口点和出口点不是重复,那么中断没有意义
yysforever 发表于 2017-2-22 22:14 | 显示全部楼层
中断函数不会返回
Dennis-Zhou 发表于 2017-2-24 10:43 | 显示全部楼层
中断的本质意义是去处理突发事件,它的存在是为了处理一个过程,而不是一个特定的预期功能,所以从这去看,不允许参数,不允许返回值就很实在了。
jouney316 发表于 2017-2-24 10:49 | 显示全部楼层
在linux中我记得是可以有返回值的
dongbaohui 发表于 2017-2-25 19:50 | 显示全部楼层

中断处理函数与一般子函数的区别,硬件原理都不一样。
l科科1987 发表于 2017-2-25 20:09 | 显示全部楼层
中断返回过程如下:首先恢复原保留寄存器的内容和标志位的状态,这称为恢复现场,由用户编程完成。然后,再加返回指令RETI,RETI指令的功能是恢复PC值,使CPU返回断点,这称为恢复断点。恢复现场和断点后,CPU将继续执行原主程序,中断响应过程到此为止。
ahhsyf 发表于 2017-2-26 22:16 | 显示全部楼层
如果说中断服务程序有返回值,那么它的值返回给谁呢?
原味_郭 发表于 2017-2-26 22:26 | 显示全部楼层
中断函式,则是硬件触发呼叫的,
硬件动作,会先把当前执行位置(pc, program counter)存下来,
才去执行中断函式,当返回时,再将存下来的运行点还原,继续执行。
所以,中断函式没有固定的呼叫点,是靠触发时机去驱动的。
liutongda 发表于 2017-2-27 09:44 | 显示全部楼层
在系统的运行过程中,一定是某种中断源出发了相应的中断,系统上挂接的中断服务程序进行现场的处理,例如告警等操作,然后清中断。
也就是说,中断服务程序链接在某一类中断源上,而这些中断源的产生是随机的,所以,中断服务程序并没有一个固定的调用者,也没有固定的返回地址,所以返回值也没有用吧。
enginezhong 发表于 2017-2-27 09:54 | 显示全部楼层
中断函数是不能被用户程序调用的,所以既不能传参数也不能有返回值。
 楼主| 叶覃 发表于 2017-4-19 20:18 | 显示全部楼层
mdk55555 发表于 2017-2-17 08:58
好像没有见过这样写程序的,中断函数不被调用,返回没有意义的

有的IDE会报错,有的不会报错,但是没有实际意义。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

180

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部