Zigbee-IAR配置


一.安装注意

  1. 右键管理员身份运行注册机
  2. 更改安装路径, 尽量不要安装在C盘

二. 新建工程

  1. 打开IAR集成开发环境,单击菜单栏的Project,在弹出的下拉菜单中选择Create New
    Project

    image-20210323120217494

  2. 在弹出窗口选中Emptyproject再点OK,如下图:

    image-20210323120335413

  3. 选择保存工程的位置和工程名: .

    image-20210323120419212

  4. 选择菜单栏上的File, 在弹出的下拉菜单中选择Save Workspace。在弹 出的Save
    Workspace As 对话框中选择保存的位置,输入文件名即可,保存Workspace.

    image-20210323120512198

image-20210323120541619

三.建立源文件

  1. 新建源文件,点击File选择New中File,再点击File选择Save填写好源文件的名称,点击保存即可。

    image-20210323120644131

image-20210323120708272

  1. 源文件建立好了还需要把源文件添加到工程里面,选择project的Add File,添加刚才保存的文件。比如我刚才保存为main. c,在弹出的对话框选择main.c即可,然后点击打开。这时,发现左边框里面出现了我们添加的文件,说明添加成功。如果想删除文件怎么办?在Workspace中选择main. c,然后右键选择Remove,删除源文件;源文件这时候只是在工程中被移除了,并没有被真正删除掉,如果不需要,必须在保存的文件夹里面手动删除。添加文件也有快捷方式,在工程名上点右键,选择Add.如下图:

    image-20210323120831348

四. 工程配置

IAR集成了许多种处理器,在建立工程后必须对工程进行设置才能够开发出相应的程序。设置步骤如”下:

  1. 点击菜单栏 上的Project,在弹出的下拉菜单中选择Options,弹出的Option for node “Led”,快捷方式:在工程名上点右键,选择Options…。设置窗口如下图所示:

    image-20210323120952622

  2. 设置相关参数。在General Option选项Target标签下,Device 栏中选择Texas Instruments文件夹下的CC2530F256.i51

    image-20210323121049474

image-20210323121109567

image-20210323121132146

  1. 设置Codemodel、Data model、Calling convention如下图所示:

    image-20210323121229840

  2. 选择Code model

    • 在Code model选项中有Near和Banked两种选择, Near如果不需要Bank支持可以选择Near,如cc2530F64,只需要访问64K flash.
      Banked选择此项表明你需要更多的空间,能访问CC2530F256带个flash空间,

    • 默认Near code model中的data model是smal,

    • 默认的banked, data model是Large, data model是决定编译器或连接器如何使用8051的内存来存储变量,选择small data model,变典型的存储在DATA内存空间,如果全用Large data model变量存储在XDATA空间。

    • 8051使用不同的指令来访问various memory spaces访问IDATA , -般情况下比仿真XDATA要快,但通常XDATA的空间比较IDATA要大。

    在Stack/Heap标签,XDATA 文本框内设置为0x1FF

    image-20210323121642199

  3. Linker选项Config标签,勾选Override default, 点击下面对话框最右边的按键,选
    lnk5lew_ cc2530F256_ banked. xcl

    image-20210323121733533

image-20210323121755235

  1. Output标签选项主要用于设置输出文件以及格式,勾C-SPY-specificextraoutputfile。设置Extra Output如6-2所示:

    image-20210323121918776

image-20210323121937057

  1. Debugger栏中的Setup栏设置为Tesas Instruments

    image-20210323122020078

是不是感觉工程设置很复杂呢?如果每个实验都要这么设置不是很累?我们现在只是教工程设置的方法而已,以后实际开发以一一个工程做模板,修改代码即可。

五.h与C文件配置

  1. 在已经创建好的IAR工程文件夹的上一级文件夹中新建一个文件lib(一定要用英文命名或数字),在lib文件里,创建命名为delay文件夹,是延时函数。

image-20210323123244747

  1. 在此工程中打开IAR软件,添加两个新文件,右键保存到先前创建的delay文件夹中。文件名分别命名为delay.c和delay.h(必须为xxx.c和xxx.h,且文件名为英文字母或数字)

    image-20210323123343878

image-20210323123411733

image-20210323123437598

image-20210323123510430

  1. 在IAR左边工程栏中右键工程,选择add将delay文件夹中的.c和.h文件分别添加进工程。如下图:

    image-20210323123551124

image-20210323123623307

  1. 再次右键工程,打开Options…选择C/C++complier→Preprocessor,之后在Additional include directories空白栏中编写两行“$PROJ_DIR$\”,第二行后直接加最开始新建的文件夹名,我这里是delay。

    image-20210323123733955

  2. 确定

六..h路径配置问题

一. $TOOLKIT_DIR$
    这个语法表示包含文件的路径在IAR 安装路径的8051 文件夹下,也就是说如果IAR 安装在C 盘中,哪么它就表示C:\ProgramFiles\IAR Systems\Embedded Workbench 4.05 Evaluation version\8051 这个路径。

二. $PROJ_DIR$
    这个语法表示包含文件的路径在工程文件中,也就是和eww 文件和ewp 文件相同的目录。我们刚此建立的project 项目中,如果使用了这个语言,哪么就表示现在这个文件指向了C:\Documents andSettings\Administrator\桌面\project 这个文件夹。

三. “\..”和“\文件夹名”
    和这两个语言配合使用的还有两个很重要的符号,
    \.. :表示返回上一级文件夹\文件夹名:表示进入名为“文件夹名”的文件夹。
四. 例子

    $TOOLKIT_DIR$\inc\ 
    这句话的意思是包含文件指向C:\Program Files\IARSystems\Embedded Workbench 4.05 Evaluation version\8051\inc。

    $PROJ_DIR$\..\Source
    这句话的意思是包含文件指向工程目录的上一级目录中的Source 文件夹中。例如:假设我们的工程放在D:\project\IAR 中,哪么$PROJ_DIR$\..\就将路径指向了D:\project中,再执行\Source,就表示将路径指向了D:\project\Source中。

七. h文件和c文件的区别

  • 子程序不要定义在.h中。函数定义要放在.c中,而.h只做声明.否则多引用几次,就会发生函数重复定义的错误。

  • .h只做声明,编译后不产生代码

  • 这样做目的是为了实现软件的模块化,使软件结构清晰,而且也便于别人使用你写的程序,纯粹用 C 语言语法的角度,你当然可以在 .h 中放任何东西,因为 #include 完全等价 于把 .h 文件 Ctrl-C Ctrl-V 到 .c 中,.h 中应该都是一些宏定义和变量、函数声明,告诉别人你的程序“能干什么、该怎么用”..c 中是所有变量和函数的定义,告诉计算机你的程序“该怎么实现”

  • 当然,如果一个 .h 被多个 .c 包含,而且 .h 中有对象(变量或函数)的定义,就会发生重复定义的错误了.声明可以无穷多次,定义只能一次

  • 一般来说,一个C文件应该是一个模块,如果你的程序仅仅有一个模块(仅仅一个C文件),就可以不用建立H文件了。否则你的模块肯定不是独立的,你的模块里面的实现要被别的模块调用。这个时候你最好生成一个头文件(H文件),在头文件里面可以声明你的那些函数是公共的。当别的模块包含你的头文件后,就可以使用你的公共声明了。

  • 一个C对应一个H,这样管理起来方便,比如你有一个”feed_dog.c”,那么就再添加一个”feed_dog.h”:

#ifndef _feed_dog_h#define _feed_dog_h
extern void feed_dog(void);
#endif

其实在H文件里写函数也无所谓,只是不符合习惯而已。只要按照以上的格式写,一个H文件添加多少次都无所谓,

  • 只是一种约定,在编译器里面,.c和.h是没有区别的,.c和.h如何使用完全取决于程序员,不过为了你的程序以后还能看懂而且别人也能看懂,请遵守普遍的约定,这些约定前面的大虾们已经讲了很多了.这个就象汽车在马路上要靠右行使一样,是人为约定,汽车(编译器)本身并不知道自己是在靠左还是靠右行使.如果你喜欢,还可以用任意后缀命名源文件和头文件,但这样干可能会导致集成编译和调试环境罢工,你只好自己写makefile文件了.
  • 为了生成一个最终的可执行文件,就需要一些目标文件,也就是需要C文件,而这些C文件中又需要一个main.函数作为可执行程序的入口,那么我们就从一个C文件入手

八. 参考文章

h文件和c文件的区别

IAR如何创建一个头文件库?

IAR包含文件的路径定义


文章作者: 梵星
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 梵星 !
  目录