社区
单片机/工控
帖子详情
msp430 进入中断后修改堆栈内的PC值
GlHFsg
2013-06-29 10:46:28
430 进入中断先保存PC,SR然后保存R12~R15,我只在堆栈中修改了PC值,其他都没改,我调试了下可以跳转到指定函数运行,不过再往下运行就会出现各种错误。
...全文
233
4
打赏
收藏
msp430 进入中断后修改堆栈内的PC值
430 进入中断先保存PC,SR然后保存R12~R15,我只在堆栈中修改了PC值,其他都没改,我调试了下可以跳转到指定函数运行,不过再往下运行就会出现各种错误。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shinerise
2013-07-06
打赏
举报
回复
在中断里修改PC,然后跳到指定函数,的确没任何问题,因为这是RTOS的最基本设计。至于跳到函数内部后执行错误,是因为你的上下文没有保存,堆栈没有恢复,跳到新的pfn后,堆栈还是原来的堆栈,上下文还是原来函数的上下文。开源免费的freertos有专门针对430的中断处理.s文件,你可以参考。
further_away
2013-07-02
打赏
举报
回复
基本上是楼上说的那样。 如果想细究,你可以看下中断跳转那部分的代码。 例如Cortex-M3,任务呗中断后 指向任务的堆栈(中断时已经把相关值入栈),跳转到了MSP去,堆栈完成后,将切换到任务堆栈,恢复现场。你自己通过修改PC跳转的话,现场没有被恢复,结果当然是异常的!
lbing7
2013-07-02
打赏
举报
回复
LZ可以参考一下部分实时系统里的移植文件 像UCOS,有现成的上下文切换的文件,看看人家是怎么做的
lr2131
2013-07-01
打赏
举报
回复
你在堆栈中修改PC是想干什么,想要做多线程还是什么? 中断中修改了保存在栈中的PC值,可以跳转到指定的函数,是,没错。但是,跳转到新的函数之后,栈指针可还是指向在中断前被打断的那个函数时用到的栈哦。你现在新函数是用的原来的函数的栈,里面运行时的寄存器全部都这样被“修改”了,原来的函数,其他的函数用的栈全部都乱套了,你的程序能不出问题嘛。 如果是想做多线程,可不单单是修改个栈里面的PC就够了,现场的保存和恢复你不做是不行的。
msp430
单片机的
中断
优先级
本文主要讲了
msp430
单片机的
中断
优先级,下面一起来学习一下
MSP430
单片机
中断
详解.docx
MSP430
单片机
中断
详解.docx
MSP430
单片机
中断
本文主要讲了
MSP430
单片机
中断
,希望对你的学习有所帮助。
msp430
用户手册(近300页)中文版
这个资料就是英文手册的中文译本,结合英文版本可能更好,
msp430
是一款不错的单片机,大家加油
MSP430
学习笔记
MSP430
学习笔记
单片机/工控
27,511
社区成员
28,797
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章