一、类型属性:
1、存储器属性:
__data16 int 16;
__regvar 定义一个变量在工作寄存器中。例:__regvar int variable_name @R4
2、一般类型属性:
(1)、函数类型属性:__interrupt,__monitor和__task
__interrupt void TA0_ISR (void) 定义中断函数
__monitor 函数执行过程中禁止中断
__task: 不对特殊功能寄存器进行压栈保护
(2)、数据类型属性:const,volatile
const 常量
volatile 易失性变量,编译器遇到由volatile修饰的变量就不对其优化,从而每次都从内存中读取该变量的值。
二、对象属性:
1、用于变量:__no_init
__no_int 定义变量但不初始化
2、用于函数和变量:location,@和__root
__root 保证一个函数或一个变量不管使用与否都产生目标代码。
@ 用于变量的绝对地址定位
3、用于函数:__intrinsic, __noreturn,__raw, __save_reg20和 vector
三、asm, __asm 插入汇编代码
推荐用法
·变量定位
__no_init int a@0x200;(注意偶地址,因为这里的a是int型的)
变量a就定义在RAM的0x200单元,注意被定位的变量不能初始化。
__no_init char b[10]@0x207;
数组b[10]定义在0x207到(0x207+9)的地址范围内
·常量定位(无须__no_init,并且可以初始化)
const unsigned int c[4]@0x1000={1,2,3,4};(这个数组在FLASH内)
·函数定位
void Fuction(void)@"My_seg"
My_seg需要在XCL文件内定义,否则编译出错。