5132|3

8

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

求助!ucos ii按键中断之后 退不出来了 [复制链接]

 

程序可以进入中断但是在中断程序中一直执行打印语句,不能跳出中断,在中断中我已将srcpnd和intpnd写1清除,我怀疑是


   ; Setup IRQ handler
 ldr r0,=HandleIRQ       ;This routine is needed
 ;ldr r1,=IsrIRQ   ;if there is not 'subs pc,lr,#4' at 0x18, 0x1c
 ldr r1, =OS_CPU_IRQ_ISR ;for ucos
 str r1,[r0]

 

中的OS_CPU_IRQ_ISR宏出了问题,才导致中断无法退出,可又不知是什么问题

 

请高手指点 不胜感激!!!

 

 

OS_CPU_IRQ_ISR  

 STMFD   SP!, {R1-R3}   ; We will use R1-R3 as temporary registers
;----------------------------------------------------------------------------
;   R1--SP
; R2--PC
;   R3--SPSR
;------------------------------------------------------------------------
 MOV     R1, SP
 ADD     SP, SP, #12             ;Adjust IRQ stack pointer
 SUB     R2, LR, #4              ;Adjust PC for return address to task

 MRS     R3, SPSR    ; Copy SPSR (Task CPSR)
 
  

 MSR     CPSR_cxsf, #SVCMODE|NOINT   ;Change to SVC mode

         ; SAVE TASK''S CONTEXT ONTO OLD TASK''S STACK
         
 STMFD   SP!, {R2}    ; Push task''s PC
 STMFD   SP!, {R4-R12, LR}  ; Push task''s LR,R12-R4
 
 LDMFD   R1!, {R4-R6}   ; Load Task''s R1-R3 from IRQ stack
 STMFD   SP!, {R4-R6}   ; Push Task''s R1-R3 to SVC stack
 STMFD   SP!, {R0}       ; Push Task''s R0 to SVC stack
 
 STMFD   SP!, {R3}    ; Push task''s CPSR
 
 LDR     R0,=OSIntNesting        ;OSIntNesting++
 LDRB    R1,[R0]
 ADD     R1,R1,#1
 STRB    R1,[R0]
 
 CMP     R1,#1                   ;if(OSIntNesting==1){
 BNE     %F1
 
 LDR     R4,=OSTCBCur            ;OSTCBHighRdy->OSTCBStkPtr=SP;
 LDR     R5,[R4]
 STR     SP,[R5]                 ;}
 
1
 MSR    CPSR_c,#IRQMODE|NOINT    ;Change to IRQ mode to use IRQ stack to handle interrupt
 
 LDR     R0, =INTOFFSET
   LDR     R0, [R0]
      
   LDR     R1, IRQIsrVect
   MOV     LR, PC                          ; Save LR befor jump to the C function we need return back
   LDR     PC, [R1, R0, LSL #2]            ; Call OS_CPU_IRQ_ISR_handler();  
   
    MSR  CPSR_c,#SVCMODE|NOINT   ;Change to SVC mode
    BL   OSIntExit           ;Call OSIntExit
   
    LDMFD   SP!,{R4}               ;POP the task''s CPSR
    MSR  SPSR_cxsf,R4
    LDMFD   SP!,{R0-R12,LR,PC}^    ;POP new Task''s context

IRQIsrVect DCD HandleEINT0 

最新回复

反正汇编我只认识mov  详情 回复 发表于 2011-7-12 16:47
点赞 关注
 

回复
举报

8

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

求救!!

 
 
 

回复

1059

帖子

0

TA的资源

纯净的硅(高级)

板凳
 
想学uCOS.还没开始.没找到好的入手方式.怎么看楼主好像是用的汇编?
 
 
 

回复

242

帖子

0

TA的资源

纯净的硅(中级)

4
 
反正汇编我只认识mov
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表