社区
单片机/工控
帖子详情
msp430 进入中断后修改堆栈内的PC值
GlHFsg
2013-06-29 10:46:28
430 进入中断先保存PC,SR然后保存R12~R15,我只在堆栈中修改了PC值,其他都没改,我调试了下可以跳转到指定函数运行,不过再往下运行就会出现各种错误。
...全文
208
4
打赏
收藏
msp430 进入中断后修改堆栈内的PC值
430 进入中断先保存PC,SR然后保存R12~R15,我只在堆栈中修改了PC值,其他都没改,我调试了下可以跳转到指定函数运行,不过再往下运行就会出现各种错误。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
手册
1
MSP430
系列 1.1 特性与功能 1.2 系统关键性能 1.3
MSP430
系列的各型号 2 结构概述 2.1 CPU 2.2 代码存储器 2.3 数据存储器(RAM) 2.4 运行控制 2.5 外围模块 2.6 振荡器、倍频器和时钟发生器 3 系统复位、
中断
...
MSP430
x2xx中文手册
MSP430
X2XX中文参考手册,共644页。 1 简介.................................................................................................................................. 23 1.1 架构.....................
区块链之超级账本源码国密
Hyperledger 是一个区块链框架,旨在帮助公司建立私人或联盟许可的区块链网络,在该网络中,多个组织可以共享控制和操作网络内节点的权限。 因为区块链是一个透明的,基于不可变模式的安全的去中心化系统,...
吉大21秋《计算机原理及系统结构》在线作业二【标准答案】.docx
A.(MSP) A,(SP)+1 SP B.(SP)+1 SP,(MSP) A C.(SP-1) SP,(MSP) A D.(MSP) A, (SP)-1 SP 答案:B 4.DMA方式的接口电路中有程序
中断
部件,其作用是______。 A.实现数据传送; B.向CPU提出总线使用权; C.向CPU...
兰大《计算机组成原理》20秋平常作业3标准.docx
A物理特性 B功能特性 C电气特性 D时间特性 2 4分
堆栈
寻址方式中,设A为通用寄存器,SP为
堆栈
指示器,MSP为SP指示器的栈顶单元,如果操作的动作是:(A) MSP ,(SP)- 1 SP ,那么出栈的动作应是B A(MSP) A,...
单片机/工控
27,374
社区成员
28,770
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章