社区
单片机/工控
帖子详情
msp430 进入中断后修改堆栈内的PC值
GlHFsg
2013-06-29 10:46:28
430 进入中断先保存PC,SR然后保存R12~R15,我只在堆栈中修改了PC值,其他都没改,我调试了下可以跳转到指定函数运行,不过再往下运行就会出现各种错误。
...全文
243
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
单片机的
中断
优先级
当
中断
服务程序执行完毕后,会执行
中断
返回操作,包括从
堆栈
中恢复之前保存的
PC
和SR
值
。如果在
进入
中断
前CPU处于低功耗模式,
MSP430
单片机还能够恢复到低功耗状态继续执行程序。整个
中断
的处理机制保证了程序的稳定...
MSP430
单片机
中断
详解.docx
###
MSP430
单片机
中断
详解 #### 一、
中断
概述
中断
是现代微控制器设计中的关键特性之一,尤其对于
MSP430
这样的低功耗微控制器来说更是如此。
MSP430
单片机
中断
机制允许外围设备在特定事件发生时通知CPU,并使CPU从...
MSP430
单片机
中断
2. 如果在响应
中断
之前CPU不处于低功耗模式,则
中断
返回后程序将从保存的
PC
值
处继续执行。 通过上述对
MSP430
单片机
中断
系统的详细介绍,可以看出其设计既考虑了处理突发事件的灵活性,又兼顾了程序执行效率和低功耗...
msp430
用户手册(近300页)中文版
MSP430
支持多达32个
中断
源,每个
中断
源都可以独立地被使能或禁止,并且可以优先级排序。 ##### 3.3
中断
处理
中断
处理包括: - **SFR中的
中断
控制位**: 控制
中断
是否被允许。 - **外部
中断
**: 通过外部事件触发
中断
...
MSP430
学习笔记
MSP430
的
中断
是处理器的一大特色,因为几乎每个外围模块都能产生,
MSP430
可以在没有任务时
进入
低功耗状态,有事件时
中断
唤醒CPU,处理完毕再次
进入
低功耗状态。整个
中断
的响应过程是这样的,当有
中断
请求时,如果CPU...
单片机/工控
27,516
社区成员
28,799
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章