Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15367829
  • 博文数量: 2005
  • 博客积分: 11986
  • 博客等级: 上将
  • 技术积分: 22535
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-17 13:56
文章分类

全部博文(2005)

文章存档

2014年(2)

2013年(2)

2012年(16)

2011年(66)

2010年(368)

2009年(743)

2008年(491)

2007年(317)

分类:

2007-10-09 14:17:54

函数指针数组应用小记

文章来源:http://gliethttp.cublog.cn[转载请声明出处]

#define IRQ_ARRAY_MAX 32
static void (*IRQ_ARRAY[IRQ_ARRAY_MAX])(void);
boolean Register_IRQ(void(*IRQ_ini)(void))
{uint8 i;
    for(i = 0;i < IRQ_ARRAY_MAX;i++)
    {
        if(IRQ_ARRAY[i] == 0)
        {
            IRQ_ARRAY[i] = IRQ_ini;
            return true;
        }else if(IRQ_ARRAY[i] == IRQ_ini)return true;//已经存在了,在Restart_IRQ()函数中会发生该种情况
    }
    return false;
}
void ARM_IRQ_Stop(void)
{
    OS_CPU_SR_Save();//清除I和F控制位
}
void ARM_IRQ_Start(void)
{
    OS_CPU_SR_Restore(0x13);//SVC模式,使能ARM的IRQ和FIQ中断
}
uint8 Restart_IRQ(void)
{uint8 i;
    for(i = 0;i < IRQ_ARRAY_MAX;i++)
    {
        if(IRQ_ARRAY[i])
        {
            IRQ_ARRAY[i]();
        }else break;
    }
    return i;
}

阅读(1871) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~