这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 关于__irq 的使用

共2条 1/1 1 跳转至

关于__irq 的使用

菜鸟
2008-12-23 19:13:50     打赏
__irq为一个标识,用来表示一个函数是否为中断函数。对于不同的编译器,__irq在函数名中的位置不一样,例如:
 ADS编译器中 : void __irq IRQ_Eint0(void);
 Keil编译器中 : void IRQ_Eint0(void) __irq;
 但是其意义一样,它所完成的任务是标识该函数为中断函数,在编译器编译是调用此函数时,先保护函数入口现场,然后执行中断函数,函数执行完毕,恢复中断现场,这整个过程不需要用户重新编写代码来完成,由编译器自动完成。因而这也给不具备中断嵌套功能的ARM系统带来了问题,若使用 __irq 时有中断嵌套产生,这现场保护就会混乱。在前一篇日志“LPC2000系列中断嵌套处理”中,自己编写中断入口现场保护代码,并不使用 __irq 标识符号,就是这个原因。
 总结如下:
 1、若不想自己编写中断入口现场保护代码,而且使用中无中断嵌套,在中断函数中用 __irq 来标识我们的中断函数,否则出错;
 2、若程序中要使用中断嵌套,对于无中断嵌套功能的ARM来说,一定要自己编写中断入口现场保护代码,而且不能用 __irq 标识我们的中断函数,否则出错。



关键词: 关于     使用     函数     中断    

菜鸟
2010-08-07 16:10:55     打赏
2楼

可以顶一个。。。


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]