社区
单片机/工控
帖子详情
msp430 进入中断后修改堆栈内的PC值
GlHFsg
2013-06-29 10:46:28
430 进入中断先保存PC,SR然后保存R12~R15,我只在堆栈中修改了PC值,其他都没改,我调试了下可以跳转到指定函数运行,不过再往下运行就会出现各种错误。
...全文
274
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就够了,现场的保存和恢复你不做是不行的。
基于CCS工程
MSP430
串口升级(三)
本文记录了首次使用
MSP430
芯片及CCS开发环境进行串口升级的经历,分享了C与汇编混合编程、
堆栈
错误处理、
中断
函数优化等难题的解决过程。
MSP430
软件复位:异常原因全解析
本文详细解析了
MSP430
单片机因软件问题导致的复位现象,包括软件主动触发、看门狗超时、非法指令执行、电源管理配置错误、
堆栈
异常、
中断
处理错误及外设配置冲突等因素。文章提供了排查建议,帮助开发者快速定位并解决复位问题。
MSP430
初学two
本文详细介绍了
MSP430
单片机的CPU结构,包括程序计数器
PC
、
堆栈
指针SP、状态寄存器SR和常数发生器CG2。同时,讲解了存储器的组织形式,如程序存储器、RAM、信息存储器和引导存储器。此外,还提到了特殊功能寄存器SFR、
中断
使能寄存器、
中断
标志寄存器和复位引脚控制寄存器的功能。
msp430
abs函数 c语言,实现一个简单的
msp430
软件
本文档详细介绍了使用IAR EW430软件在
MSP430
单片机上开发数据采集系统的步骤。首先创建项目并设置MCU、
堆栈
和连接文件,接着编写main.c文件并初始化硬件,包括时钟、GPIO和串口配置。然后添加AD转换相关函数,配置ADC和TimerB以实现采样。最后,实现
中断
服务函数,并通过串口将数据发送至上位机。项目完成后,下载到MCU并验证其功能。
MSP430
系列嵌入式实验教程---
中断
本文详细介绍了
MSP430
系列单片机的
中断
系统,包括
中断
源分类、
中断
处理流程、
中断
寄存器的使用,特别强调了
中断
向量、
中断
嵌套和端口
中断
寄存器的工作原理。通过示例说明如何配置
中断
以响应外部信号,提醒读者注意
中断
使用中的潜在问题,如防止误触发和
中断
嵌套的处理。
单片机/工控
27,521
社区成员
28,798
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章