当前位置: 代码迷 >> 单片机 >> S3C2440中断的编写有关问题
  详细解决方案

S3C2440中断的编写有关问题

热度:19   发布时间:2016-04-28 15:14:30.0
S3C2440中断的编写问题
void __irq Eint0_Isr(void);

编写后出现这样的错误
fun.h:9: error: syntax error before "Eint0_Isr"

fun.h:9: warning: data definition has no type or storage class
查看了下这样的格式也是正确的啊,难道是编译器有问题?我是在linux下编写的
linux

------解决方案--------------------
编译器不认识 “__irq”
------解决方案--------------------
参考一下代码:

#define _ISR_STARTADDRESS 0x33ffff00
 
#define U32 unsigned int
 
#define pISR_EINT0            (*(unsigned *)(_ISR_STARTADDRESS+0x20))
#define pISR_EINT1            (*(unsigned *)(_ISR_STARTADDRESS+0x24))
#define pISR_EINT2            (*(unsigned *)(_ISR_STARTADDRESS+0x28))
#define pISR_EINT4_7  (*(unsigned *)(_ISR_STARTADDRESS+0x30))
 
#define rSRCPND     (*(volatile unsigned *)0x4a000000)      //Interrupt request status
#define rINTMSK     (*(volatile unsigned *)0x4a000008)       //Interrupt mask control
#define rINTPND     (*(volatile unsigned *)0x4a000010)       //Interrupt request status
 
#define rGPBCON    (*(volatile unsigned *)0x56000010) //Port B control
#define rGPBDAT    (*(volatile unsigned *)0x56000014) //Port B data
#define rGPBUP     (*(volatile unsigned *)0x56000018)  //Pull-up control B
 
#define rGPFCON    (*(volatile unsigned *)0x56000050) //Port F control
 
#define rEXTINT0   (*(volatile unsigned *)0x56000088)  //External interrupt control register 0
#define rEINTMASK  (*(volatile unsigned *)0x560000a4) //External interrupt mask
#define rEINTPEND  (*(volatile unsigned *)0x560000a8) //External interrupt pending
 
static void __irq Key1_ISR(void)   //EINT1
{
       int led;
       rSRCPND = rSRCPND 
------解决方案--------------------
 (0x1<<1);
       rINTPND = rINTPND 
------解决方案--------------------
 (0x1<<1);
       led = rGPBDAT & (0x1<<5);
       if (led ==0)
              rGPBDAT = rGPBDAT 
------解决方案--------------------
 (0x1<<5);
       else
              rGPBDAT = rGPBDAT & ~(0x1<<5);
}
 
static void __irq Key2_ISR(void)   //EINT4
{
       int led;
       rSRCPND = rSRCPND 
------解决方案--------------------
 (0x1<<4);
       rINTPND = rINTPND 
------解决方案--------------------
 (0x1<<4);
       if(rEINTPEND&(1<<4))
       {
              rEINTPEND = rEINTPEND 
------解决方案--------------------
 (0x1<<4);
              led = rGPBDAT & (0x1<<6);
              if (led ==0)
                     rGPBDAT = rGPBDAT 
------解决方案--------------------
 (0x1<<6);
              else
                     rGPBDAT = rGPBDAT & ~(0x1<<6);
       }
}
 
static void __irq Key3_ISR(void)   //EINT2
{
       int led;
  相关解决方案