S3C2440中断的编写问题

蓝旭伯 2013-10-05 11:36:53
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下编写的
...全文
215 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2013-10-09
  • 打赏
  • 举报
回复
我用 “Code Warrior for Arm” 可以识别 __irq
bjtea 2013-10-09
  • 打赏
  • 举报
回复
参考例子:裸机程序 定义中断服务程序: void __irq Timer0Done(void) { rSRCPND = BIT_TIMER0; //Clear pending bit rINTPND = BIT_TIMER0; //Clear serve bit variable0++; } 在实验主程序中指定中断入口函数: pISR_TIMER0 = (int)Timer0Done; 以上可以在开发环境uVision4,工具链:MDK-ARM Ver 4.12 编译通过,并下载到三星2410/2440裸机开发板(内部驻有三星的VIVI引导程序)上运行。 老版本的编译环境 ADS1.2也没有任何问题。
tanshi_li 2013-10-09
  • 打赏
  • 举报
回复
linux下中断函数的定义可参考: static irqreturn_t fmi_interrupt(int irq, void *devid)
zhujinqiang 2013-10-09
  • 打赏
  • 举报
回复
这个要换编译器吧 gcc不支持对C语言扩展的关键字 换成ADS
woshi_ziyu 2013-10-09
  • 打赏
  • 举报
回复
引用 8 楼 schlafenhamster 的回复:
我用 “Code Warrior for Arm” 可以识别 __irq
主要是编译器不支持
schlafenhamster 2013-10-08
  • 打赏
  • 举报
回复
应该 “换一个编译器”, 反正不能是 linux。
woshi_ziyu 2013-10-08
  • 打赏
  • 举报
回复
2. GCC for AVR,对于中断函数支持两种关键字ISR与SIGNAL,其格式如下: ISR(vect) { ……… } 与 SIGNAL(vect) { …….. } 其中的vect就是中断向量名,根据不同的型号的AVR单片机的不同的中断源都会有相对应的中断向量名,比如外部中断0对于ISR格式的中断向量名为INT0_vect,对SIGNAL则为SIG_INTERRUPT0。
woshi_ziyu 2013-10-08
  • 打赏
  • 举报
回复
参考一下代码:
#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;
       rSRCPND = rSRCPND | (0x1<<2);
       rINTPND = rINTPND | (0x1<<2);
       led = rGPBDAT & (0x1<<7);
       if (led ==0)
              rGPBDAT = rGPBDAT | (0x1<<7);
       else
              rGPBDAT = rGPBDAT & ~(0x1<<7);
}
 
void __irq Key4_ISR(void)   //EINT0
{
       int led;
       rSRCPND = rSRCPND | 0x1;
       rINTPND = rINTPND | 0x1;
       led = rGPBDAT & (0x1<<8);
       if (led ==0)
              rGPBDAT = rGPBDAT | (0x1<<8);
       else
              rGPBDAT = rGPBDAT & ~(0x1<<8);
}
 
woshi_ziyu 2013-10-08
  • 打赏
  • 举报
回复
有可能是没有包含正确的头文件
蓝旭伯 2013-10-08
  • 打赏
  • 举报
回复
引用 3 楼 woshi_ziyu 的回复:
有可能是没有包含正确的头文件
我在《arm处理器裸机开发实践》上看到的代码和你的差不多,我也是照着写的,是不是gcc不支持对C语言扩展的关键字__irq,头文件没问题的
蓝旭伯 2013-10-07
  • 打赏
  • 举报
回复
那要怎样处理,换一个编译器?
schlafenhamster 2013-10-07
  • 打赏
  • 举报
回复
编译器不认识 “__irq”

27,382

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧