IAR 常用扩展关键字

一、类型属性:

1、存储器属性:

__data16 int 16;                              

__regvar  定义一个变量在工作寄存器中。例:__regvar int variable_name @R4

2、一般类型属性:

(1)函数类型属性:

__interrupt void TA0_ISR (void) 定义中断函数

 __monitor  函数执行过程中禁止中断

__task  不对特殊功能寄存器进行压栈保护

__nearfunc__farfunc 用于控制数据存放,这组关键字必须在函数声明和定义的时候指定

(2)数据类型属性:

const  常量

volatile  易失性变量,编译器遇到由volatile修饰的变量就不对其优化,从而每次都从内存中读取该变量的值。

二、对象属性:

1、用于变量:

__no_int 定义变量但不初始化

2、用于函数和变量: 

location

__root  保证一个函数或一个变量不管使用与否都产生目标代码。

 @  用于变量的绝对地址定位

3、用于函数:

__intrinsic,__noreturn,__raw,__save_reg20,vector

__no_init    正常情况下,应用程序启动时,IAR运行时环境将全部全局和静态变量初始化为0。IAR C编译器支持声明不初始化的变量,使用__no_init类型限定符。声明__no_init的变量不需初始化。一些关键数据在系统复位(如看门狗复位或其他原因造成的复位)时的数值是不能改变的!在这种情况下可用__no_init限定。
__root    限定的函数和变量在即是没有被任何函数引用的情况下,它依然存在于目标代码中而不会被优化掉。
__task    被该关键字限定的函数在被调用时不会做寄存器保护,即没有寄存器入栈出栈操作。通常用在RTOS的启动函数中。 
在IAR中实验了一下,发现编译器还是将寄存器进行了压栈操作,不知为何?

__weak    在链接阶段,一个symbol可以有多个weak定义和最多一个non-weak定义。如果symbol需要被程序引用,存在non-weak,则non-weak被引用。如果不在在non-weak,则weak中的一个会被应用。

三、 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文件内定义,否则编译出错。

<think>嗯,用户想在IAR Embedded Workbench中进行全局搜索。我需要先回忆一下IAR的界面和功能。IAR是一个常用的嵌入式开发环境,主要用于微控制器编程。全局搜索通常涉及查找某个变量、函数或关键字在整个项目中的出现位置。 首先,用户可能知道基本的查找功能,比如Ctrl+F,但那是单个文件的搜索。全局搜索可能需要不同的快捷键或菜单选项。我记得在IAR中,全局搜索可能是在“Edit”菜单下的“Search”或“Find in Files”选项里。或者是否有快捷键,比如Ctrl+Shift+F,这在其他IDE中常见,但不确定IAR是否相同。 另外,IAR的不同版本可能有差异,比如老版本和新版本的菜单布局可能不同。用户可能使用的是较新的版本,比如IAR 8.x或9.x,所以需要确认步骤是否适用。此外,全局搜索是否支持正则表达式,或者是否区分大小写,这些也是用户可能需要的信息。 用户提到“全局查找”,可能需要在整个工作区或项目中搜索,而不仅仅是当前文件。因此,需要指导用户如何打开“Find in Files”对话框,设置搜索路径,选择搜索范围(整个项目、当前工程等)。还可能需要注意文件类型过滤,比如只搜索.c和.h文件,或者包括所有文件。 另外,用户可能遇到的问题是搜索结果不准确,或者如何替换所有匹配项。但用户目前只是询问如何执行搜索,所以暂时不需要涉及替换功能。不过,可能需要提到搜索结果的展示位置,比如在输出窗口或专门的搜索面板中。 还要考虑到用户可能不太熟悉IAR的术语,比如“Workspace”和“Project”的区别。需要明确说明步骤,例如先打开项目,然后使用某个菜单选项,或者快捷键调出搜索框。 总结一下,步骤可能是: 1. 打开项目或工作空间。 2. 使用菜单Edit > Find in Files,或快捷键Ctrl+Shift+F。 3. 输入要搜索的关键字。 4. 选择搜索范围(整个项目、当前文档等)。 5. 设置选项,如大小写匹配、全字匹配等。 6. 执行搜索并查看结果。 需要验证这些步骤是否正确,可能需要参考IAR的官方文档或用户手册。但根据常见的IDE操作逻辑,这样的步骤应该是合理的。同时,提醒用户注意版本差异,如果步骤不符,建议查看帮助文档或在线资源。 另外,用户可能还希望了解如何保存搜索结果,或者导出结果列表,但问题中没有提到这些,所以暂时不需要涉及。只需回答如何执行全局搜索即可。 最后,生成相关问题,帮助用户深入理解,比如如何替换全局内容,如何设置搜索过滤器,或者如何处理大型项目中的搜索性能问题。</think>在IAR Embedded Workbench中执行全局搜索可通过以下步骤实现: 1. **打开全局搜索功能** - 使用快捷键$Ctrl+Shift+F$(Windows/Linux)或$Command+Shift+F$(macOS) - 或通过菜单栏选择:*Edit > Find in Files...* 2. **设置搜索参数** - 在"Find what"输入框键入目标内容 - 通过"File types"指定文件扩展名(例如*.c,*.h,*.s) - 勾选"Match case"区分大小写 - 勾选"Match whole word"全词匹配 3. **选择搜索范围** - 默认搜索整个Workspace(含所有已打开工程) - 可指定自定义目录路径 - 支持正则表达式搜索(勾选"Regular expression") ```c // 示例:在全局搜索中查找GPIO_Init函数调用 GPIO_Init(GPIOA, &GPIO_InitStructure); ``` 4. **查看搜索结果** - 结果将显示在*Find in Files*面板 - 双击结果条目跳转到对应代码位置 - 支持结果导出为文本文件(右击面板选择*Export*)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CATHY_T

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值