LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 759|回复: 0

用44B0的兄弟帮我看看!

[复制链接]
发表于 2005-10-15 16:11:02 | 显示全部楼层 |阅读模式
各位大哥,我在为44B0编写定时器中断程序的时候,发现中断能进去,却没出来,老在里面循环,是什么原因呢?我已经清除了中断标志呀!
我的代码是这样的:
           EXPORT __OSTickISR   
__OSTickISR   
    SUB        LR,LR,#4
    STMFD    SP!,{R0-R12,LR}
   
    BL        OS_ENTER_CRITICAL
   
    LDR        R0, =I_ISPC     ;Clear the flag
    LDR        R1, =BIT_TIMER0
    STR        R1, [r0]
   
    BL        OSIntEnter
   
    BL        OSTimeTick
   
    BL        OSIntExit               
   
    BL      Int1      ;Debug message display 4
   
    LDR        R0,addr_Sw_Need
    MOV        R1,R0
    LDR        R0,[R0]
    CMP        R0,#1
    MOVEQ    R2,#0
    STREQ    R2,[R1]
    BEQ        IntCtxSw
   
    BL      Int2       ;Debug message display 5
   
    LDMFD    SP!,{R0-R12,PC}^
我在C语言里面声明了一个函数OSIntCtxSw
extern char Sw_Need=0;

void OSIntCtxSw(void)
{
Sw_Need=1;
}
而我的IntCtxSw是这样的,他将切换到新的任务
IntCtxSw
    LDMFD    SP!,{R0-R12,LR}
    STR        LR, SAVED_LR
   
    ;Change to task_mode
    MRS        LR,SPSR
    MSR        CPSR_cxsf,LR
   
    LDR        LR,SAVED_LR
   
    B        OSCtxSw   

到底我在那出错了呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表