发新帖我要提问
12
返回列表
打印
[STM32F4]

模块发送失败

[复制链接]
楼主: zhenykun
手机看帖
扫描二维码
随时随地手机跟帖
21
tian111| | 2020-5-10 16:19 | 只看该作者 回帖奖励 |倒序浏览
跳到main堆栈里的数据没用了,变量直接用全局变量。
恢复SP到最开始栈顶然后直接设置PC跳到main。
感觉应该行

ldr r0, = 0x8000000
ldr sp, [r0]
ldr pc, = main

使用特权

评论回复
22
chenho| | 2020-5-10 16:23 | 只看该作者
那就还有一个问题, 一定要执行一次中断返回.
ldr pc, = main
不会生成返回指令, 还是会有问题啊

使用特权

评论回复
23
chenho| | 2020-5-10 16:27 | 只看该作者
那就还有一个问题, 一定要执行一次中断返回.
ldr pc, = main
不会生成返回指令, 还是会有问题啊

使用特权

评论回复
24
chuxh| | 2020-5-10 16:30 | 只看该作者

中断返回前执行
set_msp(restore_point);
restore_point里面放你要还原的栈信息

使用特权

评论回复
25
llljh| | 2020-5-10 16:35 | 只看该作者
如果用OS,你的ISR发送一个信号给一个高优先级任务,ISR返回后这个高优先级任务删除main任务,再重新启动它

使用特权

评论回复
26
llia| | 2020-5-10 16:38 | 只看该作者
中断如果不按照正常返回,则堆栈与程序指针未释放,会引起不可预料的结果。最好启用看门狗,由看门狗来复位。

使用特权

评论回复
27
llljh| | 2020-5-10 16:42 | 只看该作者
12楼的方法很好,不过,通用寄存器里面的数据就不好写了

使用特权

评论回复
28
pengf| | 2020-5-10 16:46 | 只看该作者
不用自己写
在main函数需要还原的地方的触发一次pendsvc中断
在那个里面把msp记录下来
以后在中断中就还原那个记录的msp

使用特权

评论回复
29
supernan| | 2020-5-10 16:51 | 只看该作者
在中断中对pc赋值就会退出中断

使用特权

评论回复
30
happy_10| | 2020-5-10 16:54 | 只看该作者

在中断函数的最后一行用 goto

使用特权

评论回复
31
songqian17| | 2020-5-10 16:57 | 只看该作者
自己写代码跳转

使用特权

评论回复
32
juventus9554| | 2020-5-10 16:59 | 只看该作者
在中断函数中进行跳转

使用特权

评论回复
33
huanghuac| | 2020-5-10 17:03 | 只看该作者
唉,还是没有什么结果,算了,多谢大家啦

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则