主题 : mini2440 ucos FIQ中断问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 10058
精华: 0
发帖: 7
金钱: 35 两
威望: 7 点
贡献值: 0 点
综合积分: 14 分
注册时间: 2009-10-22
最后登录: 2011-08-07
楼主  发表于: 2010-04-21 15:54

 mini2440 ucos FIQ中断问题

我想在ucos中加入FIQ处理函数。
在2440init.s做了一些修改,
异常向量表中FIQ的跳转修改为
b    FIQ_HANDLE
跳转到
    IMPORT Handler_FIQ
FIQ_HANDLE
    stmfd    sp!,{r0-r3,lr}
    mrs        r3,spsr
    stmfd    sp!,{r3}
    bl        Handler_FIQ
    ldmfd    sp!,{r3}
    msr        spsr_cxsf,r3
    ldmfd    sp!,{r0-r3,pc}^

Handler_FIQ是FIQ的处理函数,但运行后,当产生FIQ中断,程序死了。

void Handler_FIQ(void)
{
#if OS_CRITICAL_METHOD == 3                                /* Allocate storage for CPU status register */
                      OS_CPU_SR  cpu_sr;
   #endif
    OS_ENTER_CRITICAL();
    beep(1);
    delay(100);
    beep(0);

    rEINTPEND = rEINTPEND;
    rSRCPND =rINTPND;
    rINTPND = rINTPND;
    OS_EXIT_CRITICAL();
}

为什么会这样?
我应该怎么做?