1. 用于控制数据和指针的扩展关键字:
__eeprom 用于EEPROM 存储空间, 控制数据存放,控制指针类型和存放
__tinyflash, __flash, __farflash, __hugeflash 用于flash 存储空间, 控制数据存放,控制指针类型和存放
__ext_io, __io 用于I/O存储空间, 控制数据存放,控制指针类型和存放
__regvar 放置一个变量在工作寄存器中
2. 函数扩展关键字:
__nearfunc __farfunc 用于控制数据存放,这组关键字必须在函数声明和定义的时候指定
__interrupt. 关键字控制函数的类型。这组关键字必须在函数声明和定义的时候指定
__root. 关键字仅仅控制有定义的函数
3. 其它特别的关键字:
@ 用于变量的绝对地址定位。也可以用#pragma location 命令
#pragma vector 提供中断函数的入口地址
__root 保证没有使用的函数或者变量也能够包含在目标代码中
__no_init 禁止系统启动的时候初始化变量
asm, __asm 插入汇编代码
特别说明一下,IAR中定义中断函数的格式是:
#pragma vector="中断向量"
__interrupt void 中断服务程序(void)
{
//中断处理程序
}
其中,interrupt放在一个非主函数的前面就表示这个函数是一个中断服务程序,人为的调用它是不行的(除非是自己写的软件中断)。值得注意的是中断服务程序,其函数类型必须是VOID型,传输参数也是VOID。
中断的初始化要另外加入代码,可在主程序内加入。
文章评论(0条评论)
登录后参与讨论