OpenEdv-开源电子网

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

C语言程序,如何让中断程序结束后回到主函数指定位置继续执行?

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2018-10-14
在线时间
0 小时
发表于 2018-10-14 12:40:21 | 显示全部楼层 |阅读模式
1金钱
C语言程序,如何让中断程序结束后回到主函数指定位置继续执行?

就是说,一个交通灯的程序,我想中断后回到主函数刚开始的时候继续执行程序,而不是从上次中断的位置执行。应该怎么做?

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

使用道具 举报

3

主题

1906

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4100
金钱
4100
注册时间
2018-8-14
在线时间
695 小时
发表于 2018-10-14 13:55:39 | 显示全部楼层
本帖最后由 edmund1234 于 2018-10-14 15:21 编辑

用汇编会容易些, 根据SP的值, 修改返回地址
如果说你只跳到指定地址, 不会再返回之前应该返回的地址这样做是没问题, 否则你需要保存后再改返回地址, 状态寄存器也要保存
回复

使用道具 举报

头像被屏蔽

5

主题

91

帖子

0

精华

禁止访问

积分
195
金钱
195
注册时间
2017-12-20
在线时间
24 小时
发表于 2018-10-14 14:17:18 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

3

主题

1906

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4100
金钱
4100
注册时间
2018-8-14
在线时间
695 小时
发表于 2018-10-14 15:21:29 | 显示全部楼层
595953427 发表于 2018-10-14 14:17
使用goto语句应该可以实现,最简单的还是使用汇编

不可以用goto否则就会影响再进中断
回复

使用道具 举报

2

主题

255

帖子

0

精华

高级会员

Rank: 4

积分
821
金钱
821
注册时间
2013-6-5
在线时间
141 小时
发表于 2018-10-14 21:17:15 | 显示全部楼层
把SP当指针压入你要去的地方的地址入栈。
回复

使用道具 举报

2

主题

756

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4163
金钱
4163
注册时间
2017-10-24
在线时间
251 小时
发表于 2018-10-15 08:33:01 | 显示全部楼层
主函数的文件中设置一个全局变量,然后等待中断到来(检查这个变量是否被改变);当中断到来的时候中断服务函数更改这个变量;然后中断函数退出后,主函数继续检查,发现这个变量改变,说明已经发生了中断,然后使用switch语句判断这个变量改变后的值执行不同的程序;最后恢复这个变量为未改变前的状态,等待下一个中断到来。
十六进制带我飞。
回复

使用道具 举报

0

主题

31

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1038
金钱
1038
注册时间
2018-4-28
在线时间
203 小时
发表于 2018-10-16 12:10:18 | 显示全部楼层
goto我经常用
回复

使用道具 举报

3

主题

1906

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4100
金钱
4100
注册时间
2018-8-14
在线时间
695 小时
发表于 2018-10-16 14:08:21 | 显示全部楼层

在中断处理程序用goto跳到main函数某个位置?
你的编译器真是神啊, 呵呵
回复

使用道具 举报

0

主题

31

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1038
金钱
1038
注册时间
2018-4-28
在线时间
203 小时
发表于 2018-10-16 14:40:24 | 显示全部楼层
本帖最后由 qi777ji 于 2018-10-16 14:45 编辑

goto我经常用
回复

使用道具 举报

0

主题

31

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1038
金钱
1038
注册时间
2018-4-28
在线时间
203 小时
发表于 2018-10-16 14:40:50 | 显示全部楼层
edmund1234 发表于 2018-10-16 14:08
在中断处理程序用goto跳到main函数某个位置?
你的编译器真是神啊, 呵呵


呵呵!看清楚!goto我经常用,goto可以实现他的功能,我说了中断处理程序吗?你的编译器真是不用不用不用神啊
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
发表于 2018-10-17 15:17:27 | 显示全部楼层
qi777ji 发表于 2018-10-16 14:40
呵呵!看清楚!goto我经常用,goto可以实现他的功能,我说了中断处理程序吗?你的编译器真是不用不用不 ...

请问如何实现
回复

使用道具 举报

4

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2015-5-15
在线时间
7 小时
发表于 2018-10-20 16:27:05 | 显示全部楼层
感觉这么做没实际意义,而且容易把程序跑死,如果你想实现接收到什么信号就要程序复位从开始执行的话,建议考虑通过硬件来实现
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 16:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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