3697|4

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

ucos中加入FIQ处理函数 [复制链接]

 我用的是mini2440提供的ucos代码,
我想在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();
}

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

最新回复

W1jjyJMCLi3zDjf9Vy8WFLAlFDK4o SyJg6oxRGGoo8CGUvYwuoJlNRd0mj  详情 回复 发表于 2010-4-22 11:14
点赞 关注
 

回复
举报

66

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
怎么没人啊~~急啊
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
初步看,可能是清中断的地方有问题:

FIQ中断产生后,INTPND不会置位的。
所以下面这样写是不会清除中断的
rSRCPND =rINTPND;
没有清中断,当恢复中断后,立马又进入FIQ处理程序,相当于死循环一样了。

 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

4
 

vu1yIlRQH



vILSFmBly
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

5
 

W1jjyJMCLi3zDjf9Vy8WFLAlFDK4o



SyJg6oxRGGoo8CGUvYwuoJlNRd0mj
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
有奖直播:当AI遇见仿真,会有什么样的电子行业革新之路?
首场直播:Simcenter AI 赋能电子行业研发创新
直播时间:04月15日14:00-14:50

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

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

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

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

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