IAR工作环境配置
第一次使用IAR,不是很习惯其显示界面风格和编程风格,略作更改。
- 新建项目
- 工程模板
- 字体颜色配置
- 快捷键
- 代码模板
新建项目
- 创建新的项目
Project->Create New Project
选择编译器,创建空的工程 - 选择项目文件保存位置,保存
.ewp
文件 - 添加工程文件:在窗口左侧的
Workspace
中右击项目名,选择Options
- 选择芯片型号
General Options->Target
- 配置输出文件
General Options->Output Converter
勾选Generate additional output
,
Output format
选择Intel exended
,然后勾选Override default
- 仿真设置
General Options->Debugger
中Driver
工程模板
- 添加文件夹:在项目名上面右击,选择
Add->add group
,在跳出的对话框中键入文件夹名称 - 添加文件:在文件夹上面右击,选择
Add->add files
,这里文件可以多选 - 创建新文件:快捷键
Ctrl+N
,编辑新建文件后保存为相应的文件后缀即可 添加头文件目录:右击项目名,选择
Options
,在C/C++ Compiler->Preprocessor
添加如图路径
5.点击保存,保存.eww
文件
字体颜色配置
配置均在
Tools->Options
下完成显示行号:
Editor
勾选Show line number- Tab缩进数:
Editor
下Indent size 设置为4 - 启动时装载旧工程:
Project
勾选Reload last workspace at setup - 显示更多信息:
Messages
中*Show build messages为All - 显示自定义的数据类型:将自定义数据类型编辑为一个文本文件,在
Editor->Setup files
勾选Use custom keyword file并添加文件文件路径进去
int32_t
s32
int16_t
s16
int8_t
s8
uint32_t
u32
uint16_t
u16
uint8_t
u8
- 配置颜色:
Editor->Color and Fonts
,编辑器配色方案见仁见智,自己习惯就好
名称 | 颜色 | 字体 | 说明 |
---|---|---|---|
default | black | normal | 普通文本 |
C keyword | purple | normal | int if |
String | dark red | normal | “a” |
char | black | bold | ‘a’ |
preprocessor | blue | normal | include |
number | navy | normal | 123 |
C++comment | olive | normal | //a |
comment | green | normal | /*a*/ |
user keyword | blue | normal | 用户自定义的数据类型 |
快捷键
版本之间快捷键可能会不同或与其他软件冲突,用户使用前需先查看
CTRL+SHIFT+SPACE 模版使用(包括if、for、class等);//新版本Ctrl+alt+V
CTRL+B 括号匹配 选择括号内的多行代码;
CTRL+T 自动缩进,格式化选中代码,格式设置在TOOLS->OPTIONS->EDITER->Auto Indent->CONFIGS;
CTRL+K 快注释,屏蔽选中的代码;
CTRL+SHIFT+K 取消快注释,取消屏蔽选中的代码;
代码模板
这是个人认为IAR很好的一个地方,创建好合适的模板后就可以随时调用,方便快捷
Edit->code templates->edit template
会打开一个文本文件,用户可以按照其说明的方式进行配置。我自己的模板使用与ST代码风格
################################################################################
##
## This is an example file for defining your own code templates.
##
## The syntax for defining a code ################################################################################
##
## This is an example file for defining your own code templates.
##
## The syntax for defining a code template is:
## #TEMPLATE <template name>,<field>[=default value], <field>...
##
## The template name, the fields and their default values should be defined
## within quotes if they contain non-alphanumeric characters.
## Use "&" in front of a letter in the template name to make the letter become
## a shortcut, which means that you can use ALT+<letter> to select the template
## or jump to the field in the dialog box.
## Use ">" in the template to organize the template names in submenus.
##
################################################################################
#TEMPLATE "&Notes>&HEAD",&Name="$PROJ_FNAME$","&File Name"="$FILE_FNAME$",&Description,&Version,&Created="by $USER_NAME$",&date="$DATE$",&Path="$PROJ_DIR$",
/**
******************************************************************************
* Copyright (c) 2017 $USER_NAME$.
* All right reserved
*
* 项目名称:%1
* 文件名称:%2
* 当前版本:V%4 $CONFIG_NAME$
* 作 者:%5
* 完成日期:%6
* 项目路径:%7
******************************************************************************
* 摘 要:%3
*
*
*
* 历史信息:%c
******************************************************************************
*/
#TEMPLATE "&Notes>&INC","&File Name"
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __%1_H
#define __%1_H
/* Includes ------------------------------------------------------------------*/
/* Exported types ------------------------------------------------------------*/
/* Exported constants --------------------------------------------------------*/
/* Exported macros -----------------------------------------------------------*/
/* Private macros ------------------------------------------------------------*/
/* Exported functions ------------------------------------------------------- */
%c
#endif /* __%1_H */
/************************ (C) COPYRIGHT $USER_NAME$ *************END OF FILE****/
#TEMPLATE "&Notes>&SRC"
/* Includes ------------------------------------------------------------------*/
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/
/* Public functions ----------------------------------------------------------*/
%c
/************************ (C) COPYRIGHT $USER_NAME$ *************END OF FILE****/
#TEMPLATE "&Statement>&If"
if( %c )
{
}
#TEMPLATE "&Statement>&Else"
else if( %c )
{
}
#TEMPLATE "&Statement>&While"
while( %c )
{
}
#TEMPLATE "&Statement>&Do-while"
do
{
}while( %c );
#TEMPLATE &Statement>&For,"&End Value"=10,&Variable=i
for(int %2 = 0; %2 < %1; %2++)
{
%c
}
#TEMPLATE "&Statement>&Switch"
switch( %c )
{
case 0:
break;
default:
break;
}
#TEMPLATE "&Statement>S&truct","&Struct Name"="name","&Member Type","&Member Name"
Struct %1
{
%2 %3;
%c
};
#TEMPLATE "&Statement>E&num","&Enum Name"="name","&Member Name"
Enum %1{%2,%c};
#TEMPLATE &Function>&Define,"&Function name"="Function1","&Input Param","&Input Param introduce","&Return Paramtype"="void","&Input Param introduce",&Description=--,&Created="by $USER_NAME$ $DATE$"
/**
* 摘 要: %6
* 输入参数: %2 %3
* 返回参数: %4 %5
*/
%4 %1(%2)
{
%c
}
#TEMPLATE &Function>D&eclare,"&Function name"="Function1","&Input Param","&Input Param introduce","&Return Paramtype"="void","&Input Param introduce",&Description=--,&Created="by $USER_NAME$ $DATE$"
/**
* 摘 要: %6
* 输入参数: %2 %3
* 返回参数: %4 %5
*/
%4 %1(%2);
#TEMPLATE &Function>&Main,&Description=--,&Created="$DATE$, by $USER_NAME$"
/* Includes ------------------------------------------------------------------*/
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/
/**
* 摘 要: %1
* 输入参数: None
* 返回参数: None
*/
void main(void)
{
/* Initialize configuration ------------------------------------------*/
%c
/* Infinite loop -----------------------------------------------------*/
while(1)
{
}
}
/************************ (C) COPYRIGHT $USER_NAME$ *************END OF FILE****/
is:
## #TEMPLATE <template name>,<field>[=default value], <field>...
##
## The template name, the fields and their default values should be defined
## within quotes if they contain non-alphanumeric characters.
## Use "&" in front of a letter in the template name to make the letter become
## a shortcut, which means that you can use ALT+<letter> to select the template
## or jump to the field in the dialog box.
## Use ">" in the template to organize the template names in submenus.
##
################################################################################
#TEMPLATE "&Notes>&HEAD",&Name="$PROJ_FNAME$","&File Name"="$FILE_FNAME$",&Description,&Version,&Created="by $USER_NAME$",&date="$DATE$",&Path="$PROJ_DIR$",
/*******************************************************************************
* Copyright (c) 2017 $USER_NAME$.
* All right reserved
*
* 项目名称:%1
*
* 文件名称:%2
* 摘 要:%3
*
*
* 当前版本:V%4 $CONFIG_NAME$
* 作 者:%5
* 完成日期:%6
* 项目路径:%7
*
* 历史信息:%c
*******************************************************************************/
#TEMPLATE "&Statement>&If"
if( %c )
{
}
#TEMPLATE "&Statement>&Else"
else if( %c )
{
}
#TEMPLATE "&Statement>&While"
while( %c )
{
}
#TEMPLATE "&Statement>&Do-while"
do
{
}while( %c );
#TEMPLATE &Statement>&For,"&End Value"=10,&Variable=i
for(int %2 = 0; %2 < %1; %2++)
{
%c
}
#TEMPLATE "&Statement>&Switch"
switch( %c )
{
case 0:
break;
default:
break;
}
#TEMPLATE "&Statement>S&truct","&Struct Name"="name","&Member Type","&Member Name"
Struct %1
{
%2 %3;
%c
};
#TEMPLATE "&Statement>E&num","&Enum Name"="name","&Member Name"
Enum %1{%2,%c};
#TEMPLATE "&Statement>ifn&def","&File Name"
#ifndef __%1_H
#define __%1_H
%c
#endif
#TEMPLATE &Function>&Define,"&Function name"="Function1","&Input Param","&Return Paramtype"="void" ,&Description=--,&Created="by $USER_NAME$",Date="$DATE$"
/**********************************************函数定义*****************************************************
* 函数名称: %3 %1(%2)
* 输入参数: %2
* 返回参数: %3
* 功 能: %4
* 作 者: %5
* 日 期: %6
************************************************************************************************************/
%3 %1(%2)
{
%c
}
#TEMPLATE &Function>D&eclare,"&Function name"="Function1","&Input Param","&Return Paramtype"="void" ,&Description=--,&Created="by $USER_NAME$",Date="$DATE$"
/**********************************************函数定义*****************************************************
* 函数名称: %3 %1(%2)
* 输入参数: %2
* 返回参数: %3
* 功 能: %4
* 作 者: %5
* 日 期: %6
************************************************************************************************************/
%3 %1(%2);
#TEMPLATE &Function>&Main,&name=Main,&Description=--,&Created="$DATE$, by $USER_NAME$"
/***********************************************************************************************************
* 函数名称: main()
* 功 能: %2
*
* 作 者: %3
************************************************************************************************************/
void main(void)
{
%c
while(1)
{
}
}