导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→发表看法:[MICKEYMOUSE]KEIL写IRQ握手函数的问题[注意]



No.43269
作者:MICKEYMOUSE
邮件:zhanghf@embedinfo.com
ID:104569
登陆:13次
文章数:28篇
最后登陆IP:183.38.85.6
最后登陆:2011/6/29 15:33:54
注册:2008/4/1 15:50:28
财富:301
发帖时间:2008/5/13 9:11:25
发贴者IP:218.17.61.134
标题:MICKEYMOUSE:KEIL写IRQ握手函数的问题[注意]
摘要:No.43269KEIL写IRQ握手函数的问题[注意] ?当ARM响应IRQ中断的时候,会自动将LR中存放返回地址,并将CPSR复制到相应中断模式下的SPSR中,这些应该都是ARM处理器自动完成的对吗?而且ARM退出中断的时候,复制相应SPSR到CPSR中,也应该是硬件完成的吧?

但是用KEIL下—irq关键字声明的中断函数,我在看汇编的时候,发现中断处理函数只将R0-R6 还有LR进行了压栈,并没有将刚进入中断后的SPSR进行压栈,这样,中断处理函数就有可能在运行过程中更改了SPSR的某些值,而更改后的SPSR在退出中断的时候,重新复制到CPSR,这样很可能会造成当前被打断的程序打断时的CPSR与中断结束后从SPSR复制回CPSR的两个值不同而无法在中断后正常工作啊。

比如我声明的中断握手函数是:__irq void IRQ_Handler (void) 

生成的汇编代码是

STMDB R13!,{ ......

>>返回讨论的主题



  发表回复
用户名   *您没有注册?
密码   *
验证码   * .
标题   *
心情
随便说说    我回答你    最新发现    得意的笑   
气死我了    真是没劲    坚决同意    表示反对   
大家过来    好奇怪哟    懒得理它    大家小心   
文件上传
内容


字体:      字体大小:    颜色:
粗体 斜体 下划线 居中 超级连接 Email连接 图片 Flash图片 Shockwave文件 realplay视频文件 Media Player视频文件 QuickTime视频文件 引用 飞行字 移动字 发光字 阴影字 查看更多的心情图标 背景音乐
点击加入表情
                         
选项
有回复时用短消息通知您?

   




老古网执行:16毫秒 最大:78531毫秒 查询6次