
IAR C语言开发软件由IAR公司开发的第三方MSP430开发环境,有30天试用版与4K容量的DEMO版本。是一个新的专业化集成开发环境,用来编辑,编译和调试Windows 9x/NT/2000/XP环境下的MSP430应用程序。还包含一个汇编器和一个仿真器。
IAR Embedded Workbench(简称EW)IAR EW的C/EC++交叉编译器和调试器是今天世界最完整的和最容易使用专业嵌入式应用开发工具。EW对不同的微处理器提供一样直观用户界面。EW包括:嵌入式C/C++优化编译器,汇编器,连接定位器,库管理员,编辑器,项目管理器和C-SPY调试器中。使用IAR的编译器最优化最紧凑的代码,节省硬件资源,最大限度地降低产品成本,提高产品竞争力。
其中最广泛使用的有EWARM, EWAVR和EW430.
找到IAR软件EW430_310的子目录,双击autorun.exe,开始安装EW430_310,如图3-21所示,安装路径可以按默认的。
图3-21 IAR软件EW430_310的子目录
将软件中crack子目录下图3-22的软件拷贝到安装软件图3-23的bin目录下,运行crack ,回答y即可
图3-22 软件中crack子目录
新型C/C++工具包 3.10版的集成开发环境IAR Embedded Workbench具有内嵌C++扩展功能,支持在模板和标准模板库(STL)内嵌C++功能,包括模板、命名空间、可变符号、static-cast(类型强制转换)、reinterpret-cast(类型强制转换)和const-cast(类型强制转换);新型IDE窗口管理具有可停靠窗口和多视窗功能;源浏览器可对定义和声明进行快速导航;IAR C-SPY调试器的STL Container Awareness具有对STL容器内数据类型的码元进行总览的功能;IAR C-SPY调试器支持全硬件调试;还包括Ready-made工程模板、自定义C/内嵌C++库和在线帮助系统。
以下是在使用MSP430中的一些总结:
1)系统时钟问题:
系统默认使用DCO,使用外部高速晶振XT2时必须自己开启XT2,并延时50us等待XT2起振,然后手工清除IFG1中的OFIFG位!一定要注意操作顺序,打开XT2->等待XT2稳定->切换系统时钟为XT2,若后面两步操作反了,在通常情况下不会出现问题,但是在电压不稳MCU频繁复位的情况下,非常容易造成MCU死掉,只能掉电后重新上电才能可靠复位。
图3-23 安装软件的bin目录
2)早期版本的IAR开发环境
必须在Project->Option->C-Spy中选择对应器件的DDF文件,否则调试时无SFR窗口。
3)在写Flash期间,一定要关闭中断,此时CPU无法执行程序
4)调试的时候,不要选中"Release JTAG on Go"
5) 在调试时,需要关闭看门狗,否则在打开看门狗的情况下,每当执行到断点,程序将会跳转到入口点从头执行。或者,暂停运行或停止到断点处时,当需要继续运行时,程序不再执行,而是需要使用“同步JTAG”才能继续运行(从头运行)
6) IAR EWB标识符是区分大小写的
7) 结构变量内部存在对齐要求,通常按照2个字节的位置对齐,在"C/EC++ Compiler Reference Guide"的P93又如下例子:
struct {
short s; /* stored in byte 0 and 1 */
char c; /* stored in byte 2 */
long l; /* stored in byte 4, 5, 6, and 7 */
char c2; /* stored in byte 8 */
} s;
sizeof(s) 为10,而不是8
可以使用#pragma pack来改变这种对齐方式,但是会导致,这个结构只能按字节方式存取
图3-24 版本号查看
8) MSP430 IAR C/EC++ Compiler支持两个运行库
a) IAR CLIB : 主要用于8或16为处理器,不完全兼容ISO/ANSI C,也不完全支持IEEE 754浮点数,不支持Embedded C++.
b) IAR CLIB : 支持ISO/ANSI C和Embedded C++.
图3-25 进入编辑状态
9) cstartup的定制
(1). 在__low_level_init()中添加代码。该函数可以用来初始化I/O寄存器,并决定数据段是否在cstartup被初始化。文件430\\src\\lib\\lowinit.c给出了框架,copy到项目目录中使用,文件中有一定的使用说明。
(2) 若__low_level_init()中添加代码不能满足要求,则把430\\src\\lib\\cstartup.s43拷贝到自己的工作目录,修改所需代码;然后在将该文件添加到项目,在项目选型的XLINK的include页下选择Ignore CSTARTUP in library即可。
10) 使用#include "io430x14x.h"和#include "in430.h"来替代#include struct { unsigned char WDTIE : 1; unsigned char OFIE : 1; unsigned char : 2; unsigned char NMIIE : 1; unsigned char ACCVIE : 1; unsigned char URXIE0 : 1; unsigned char UTXIE0 : 1; } IE1_bit; 不推荐使用bitfields,效率很低 11) 数组的索引值用int型效率最高,char型略低 数组类型:char型数组效率最高, 其他类型的数组在索引时,都采用了乘法
