硬汉嵌入式论坛

 找回密码
 立即注册
查看: 870|回复: 9
收起左侧

[有问必答] 程序卡在中断里没法恢复现场了,有没有办法使程序复位,但是又不改变内存值

[复制链接]

31

主题

76

回帖

169

积分

初级会员

积分
169
发表于 2022-7-29 09:08:58 | 显示全部楼层 |阅读模式
如题,现在想复位程序,但是不改变内存值,让程序快速恢复复位前的执行状态,而不让用户感知到,求大佬回复
回复

使用道具 举报

31

主题

76

回帖

169

积分

初级会员

积分
169
 楼主| 发表于 2022-7-29 09:10:43 | 显示全部楼层
程序没有进入硬件异常,卡在CAN中断里不执行了,不是不停的进出CAN中断,只是死在can中断里了,比它优先级高的定时器中断仍然可以运行
回复

使用道具 举报

31

主题

76

回帖

169

积分

初级会员

积分
169
 楼主| 发表于 2022-7-29 09:12:54 | 显示全部楼层
能不能在发现死在中断里后,直接强制跳转到main函数
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107452
QQ
发表于 2022-7-30 10:31:43 | 显示全部楼层
设置个状态变量(设置Uninit未初始化),记录大概的运行位置,出问题后软件复位,上电后检测这个变量标志,然后跳转到相应为准,不知道是否满足你的需求。
回复

使用道具 举报

31

主题

76

回帖

169

积分

初级会员

积分
169
 楼主| 发表于 2022-7-30 11:02:43 | 显示全部楼层
eric2013 发表于 2022-7-30 10:31
设置个状态变量(设置Uninit未初始化),记录大概的运行位置,出问题后软件复位,上电后检测这个变量标志, ...

感谢 我试试
回复

使用道具 举报

79

主题

712

回帖

949

积分

金牌会员

积分
949
发表于 2022-7-31 15:38:12 | 显示全部楼层
你这样很危险。
回复

使用道具 举报

79

主题

712

回帖

949

积分

金牌会员

积分
949
发表于 2022-7-31 15:39:08 | 显示全部楼层
ssimple 发表于 2022-7-29 09:10
程序没有进入硬件异常,卡在CAN中断里不执行了,不是不停的进出CAN中断,只是死在can中断里了,比它优先级 ...

是不是CAN中断里面修改了不该修改的数据了
回复

使用道具 举报

31

主题

76

回帖

169

积分

初级会员

积分
169
 楼主| 发表于 2022-8-1 08:54:35 | 显示全部楼层
庄永 发表于 2022-7-31 15:39
是不是CAN中断里面修改了不该修改的数据了

不清楚啊,CAN里面只做了数据接收,处理都是放在主函数的。楼上提到的办法会有啥风险啊
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107452
QQ
发表于 2022-8-1 10:32:28 | 显示全部楼层
ssimple 发表于 2022-8-1 08:54
不清楚啊,CAN里面只做了数据接收,处理都是放在主函数的。楼上提到的办法会有啥风险啊

软件复位这种属于迫不得已时采用的玩法,当然,最好还是从根本省解决这个中断异常。
回复

使用道具 举报

5

主题

192

回帖

212

积分

高级会员

积分
212
发表于 2022-8-3 10:19:33 | 显示全部楼层
你是不是用的 HAL库?
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-1 17:26 , Processed in 0.181145 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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