关于__irq 的使用
来源:互联网 发布:windows 资源管理器 编辑:程序博客网 时间:2024/05/17 22:09
关于__irq使用,首先看ARM公司的说明:
ARM 编译器 armcc 支持的函数关键字和运算符。
ARM 编译器支持的关键字扩展表:
关键字
__align
__int64
__svc
__ALIGNOF__
__INTADDR__
__svc_indirect
__asm
__irq
__svc_indirect_r7
__declspec
__packed
__value_in_regs
__forceinline
__pure
__weak
__global_reg
__softfp
__writeonly
__inline
__smc
通过使用 __irq 关键字,可以将 C 或 C++ 函数用作中断例程。
__irq 是一个函数限定符。 它影响函数的类型。
限制:
armcc的编译器的C对ANSI C的关键字做了些扩展。
比如__irq 是用来声明IRQ和FIQ中断处理函数用的,可以自动返回原来的现场。__asm用来嵌入汇编代码等。
__irq为一个标识,用来表示一个函数是否为中断函数。对于不同的编译器,__irq在函数名中的位置不一样,例如:
ADS编译器中 : void __irq IRQ_Eint0(void);
Keil编译器中 : void IRQ_Eint0(void) __irq;
但是其意义一样,它所完成的任务是标识该函数为中断函数,在编译器编译是调用此函数时,先保护函数入口现场,然后执行中断函数,函数执行完毕,恢复中断现场,这整个过程不需要用户重新编写代码来完成,由编译器自动完成。因而这也给不具备中断嵌套功能的ARM系统带来了问题,若使用 __irq 时有中断嵌套产生,这现场保护就会混乱。因此自己编写中断入口现场保护代码,并不使用 __irq 标识符号,就是这个原因。
总结如下:
1、若不想自己编写中断入口现场保护代码,而且使用中无中断嵌套,在中断函数中用 __irq 来标识我们的中断函数,否则出错;
2、若程序中要使用中断嵌套,对于无中断嵌套功能的ARM来说,一定要自己编写中断入口现场保护代码,而且不能用 __irq 标识我们的中断函数,否则出错。
参考网址:
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0348ac/BABICJBC.html
http://blog.21ic.com/user1/3572/archives/2007/34803.html
- 关于__irq 的使用
- 关于__irq 的使用
- 关于__irq 的使用
- 关于__irq 的使用
- 关于__irq的使用
- 关于__irq 的使用
- 关于__irq 的使用
- 关于__irq 的使用
- 关于__irq 的使用
- 关于__irq 的使用
- 关于gcc中__irq
- ARM编译器的__irq关键字
- MDK中如何使用中断关键词__irq
- ARM 语言关键字__irq所做的工作
- 关于游标的使用
- 关于ViewState的使用
- 关于TreeView 的使用
- 关于SQLDMO的使用
- window消息
- VC中自定义消息实现(转载于并加以修改)
- html、javascript小技巧
- javascript正则表达式规则
- MBR
- 关于__irq 的使用
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- 安装Oracle10g以后,初次添加用户,出现如下提示,已解决。。。
- java与MySql连接的增删查改
- Nhibernate的学习摘要
- 通过CSS控制图片显示的大小
- 将多个类似命令消息或多个控件消息映射到同一个响应函数:ON_COMMAND_RANGE
- Ajax 和 XML: 五种常见 Ajax 模式
- make 的常见错误信息zz