QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1181|回复: 0

如何正确设置S3C44B0的定时器

[复制链接]
发表于 2005-10-15 10:10:20 | 显示全部楼层 |阅读模式
各位大哥,我在为44B0编写定时器中断程序的时候,发现中断能进去,却没出来,老在里面循环,不挺的显示 4 和5。是什么原因呢?我已经清除了中断标志呀!
我的代码是这样的:
           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       

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

本版积分规则

GMT+8, 2024-11-23 18:48 , Processed in 0.045357 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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