ARM 中断的写法

//如一下代码所示,不能用2个if 代替这个两个else if,也不能用switch,因为最多四个参数寄存器,编译器会给switch类型的语法,每个情况分配一个寄存器,即使不带参数,也会出现中断不能响应的问题,所以用if..else if ...else if 代替switch 和 单个的if 语句. (连蒙带猜,不准,如有谁知道具体,请留言)

#include "s3c24xx.h"
void delay(unsigned int time)
{
        int i;
        for(i=time; i>0; i--);
}

void EINT_Handle()
{
        //PWM中断
        if(INTOFFSET == 10)
        {  
                SRCPND = 1<< INTOFFSET;
                INTPND = INTPND;
                GPFDAT ^= (1<<4);
//              GPFDAT = ~(GPFDAT & (0xf<<4));
        }  
        //外部中断0及外部中断2
        else if((INTOFFSET == 0) | (INTOFFSET == 2))
        {  
                SRCPND = 1<< INTOFFSET;
                INTPND = INTPND;
                GPFDAT |= (1<<4);
                delay(50000);
        }  
        //外部中断11和19
        else if(INTOFFSET == 5)
        {  
                if(EINTPEND == (1<<11))
                        EINTPEND = (1<<11);
                if(EINTPEND == (1<<19))
                        EINTPEND = (1<<19);
                SRCPND = 1<< INTOFFSET;
                INTPND = INTPND;
                GPFDAT |= (1<<4);
                delay(50000);
        }  

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值