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 插入汇编代码
====================================================================
__root 关键字保证没有使用的函数或者变量也能够包含在目标代码中.
定义存放在__flash 空间的数据在程序编译时会自动生成代码嵌入到flash代码中,对于程序没有使用也要求编译的数据(比如可以在代码中嵌入你的版本号,时间等)必须加关键字__root 限制。
例:
#i nclude
__root __flash unsigned char p @ 0x10 =0x56;
void main(void)
{
}
程序没有使用P变量,编译也会生成该代码。
:020000020000FC
:1000000016C018951895189518951895189518955F
:10001000569518951895189518951895189518953A
:10002000189518951895089500008895FECF0FE94A
:100030000DBF00E00EBFC0E8D0E003D0F4DFF4DF76
:06004000F3CF01E008957A
:0400000300000000F9
:00000001FF
关键字:IAR 扩展关键字
引用地址:
IAR 扩展关键字
推荐阅读最新更新时间:2024-03-16 15:27
IAR MSP430设置合理堆栈大小
最近在MSP430-169LCD(MSP430F169,RAM为2KB)调试一些ucos演示例子,IAR for MSP430默认的堆栈大小是80字节,编译可以通过,运行结果不确定性,调试过程会提示 the stack pointer for stack is outside the stack range ,堆栈溢出。那么,到底设置多大的堆栈够用且不浪费呢。 一、合理设置堆栈大小 首先,查看程序共需要多大的堆栈,生成map文件,方法如下: 图1 生成map文件 生成的map文件在项目目录下的/Debug/List,打开map文件在CALL GRAPH找到找到栈的最大使用量(我的理解是main主函数,用栈最多,所以
[单片机]
用IAR测试STM8的PWM
IAR测试STM8的PWM 板子上的LED1接在了PD3上,而PD3复用功能是TIM2_CC2,正好可以用来测试PWM功能。当然板上的另外2个LED也可以用,LED2对应PD2/TIM3_CC1,LED3对应PD0/TIM3_CC2。下面通过电位器来调整LED1的亮度。 源程序: #i nclude iostm8s207sb.h void CLK_init(void) { CLK_CKDIVR = 0x08; // 16M内部RC经2分频后系统时钟为8M } void GPIO_init(void) { PD_DDR = 0x08; // 配置PD端口的方向寄存器PD3输出 PD_CR1 = 0x08; // 设置PD3
[单片机]
IAR调试stm8单片机时延时函数被优化的问题
IAR优化等级选到最高,调用以下延时函数时会被编译器直接优化,无法达到延时的效果。 void delay_n_ms(u32 time) { u32 m = 0; u16 n = 0; for(;m time;m++) { for(n = 0;n 2720;n++)//16Mhz { ; } } } 在函数的变量前加volatile关键字后问题解决。 void delay_n_ms(u32 time) { volatile u32 m = 0; volatile u16 n = 0; for(;m time;m++) { for
[单片机]
IAR新建一个工程
1 安装好IAR For STM8软件。 2 在project菜单下新建一个工程 3 弹出的文本框中选择C文件 4 新建一个文件夹用于保存我们新建的工程,最好不要包含中文命名,保存后给工程命名。 5 保存后是这样的。 6 选择一个和当前单片机对应的版本,复制如下文件到你新建项目的目录下替换原来的man.c文件。 7 在项目中添加复制过来的文件 8 编译后报错的原因,需要添加头文件。 9 此时需要添加头文件。 10 对IAR做配置 11 有时候程序是对的但是结果不一样可能就是这里配置不一样 12 添加库函数头文件和库函数文件指定项目路径 以上三个图为指定库函数文件库函数头文件本项
[单片机]
使用IAR和BSL下载线烧录程序至单片机方法下载
一,使用两个软件:IAR(EW430)和MSP430BSL.exe 二,IAR软件用于编程和编译;BSL软件负责载入烧录。 三,在IAR中编程操作: IAR Systems是全球领先的嵌入式系统开发工具和服务的供应商。公司成立于1983年,迄今已有27年,提供的产品和服务涉及到嵌入式系统的设计、开发和测试的每一个阶段,包括:带有C/C++编译器和调试器的集成开发环境(IDE)、实时操作系统和中间件、开发套件、硬件仿真器以及状态机建模工具。
[单片机]
IAR添加文件夹和头文件的方法
添加文件夹的方法: (1) 右键项目 (2)选择add (3)选择add group 然后添加文件夹的名字就可以了 (4)添加入文件夹以后可以在这个文件夹内添加源文件 添加头文件的方法 (1)右键工程 (2)选择option,选择c/c++ compler (3)选择preprocessor,点击下图的 ... 方框 点击click to add 去添加头文件的路径 注意这里可以用绝对路径,或者项目中定义的值作为头文件的路径
[单片机]
Keil IAR - Cortex M3 调试问题及解决方法(3)
上次谈到由于stm32官方库和iar ew arm 的不断升级, 多出配置都发生了 变化, 1在使用 ewarm 6.30 升级stm32 stdlib 3.5 出现了这个错误 Error(Pe47) declaration is incompatible with __interwork__softfp unsigned long __get_PSP(void) , ”declaration “ 说明有文件中定义冲突。 查了一下,IAR自己带了CMSIS的库文件,而我们本地工程下也有CMSIS, 因此我们选择IAR自带的就没有问题了。 步骤如下: Please follow the followi
[单片机]