IAR中MSP430的头文件解析,你看看
IAR_+_Proteus7.6仿真MSP430单片机的设置方法

(3) 在左边选择 Linker 选项,在右边选择 Output,按下图中设置选项。
(4)编译 X.C 文件生成 XX.hex 文件,XX.hex 在工程中的 Debug 文件下的 Exe 文件夹 下
2. Proteus 工程及仿真电路建立,注意 MSP430 型号选取,有些不可仿真,具体如下图
3. 建立仿 MSP430 的 Proteus7.6 仿真电路
仿真效果如下,
IAR + Proteus7.6 仿真 MSP430 单片机的设置方法
Proteus7.6 增加了 MSP430 系列单片机,iar embedded workbench 和 Proteus7.6 联调可 完成对 MSP430 的软件仿真,步骤如下。 1. 设置 IAR 软件,生产 XX.HEX 文件 (1) 在 IAR 建立 MSP430 工程及 X.C 文件,并编写 X.C 代码,界面如下图,
msp430如何选择头文件?怎么添加?

msp430 如何选择头文件?怎么添加?
使用iar,如果没有头文件,编译肯定通不过,更加不用说继续设计
了,本人使用IAR 进行msp430 开发,选择原因是因为ccs 所需内存太大
了,keil 已经无法满足MSP430 的某些功能了,对于IAR 集成开发环境,我
们从事一个项目开发,首先就是要添加头文件,头文件相信大家都不陌生,
使用C 语言开发的时候我们见到过无数的#include《》和#include 都可以添
加头文件,说明一下:放在自己工程目录下的头文件要用#include
msp430g2553.h ,系统目录下的头文件才用#include《iomsp430g2553.h》,当然你自定义的头文件可以在系统头文件库里面的。
再次使用时新版本的IAR5.31 时发现又不会添加头文件了,想想当时
用的时候也遇到过类似问题,最后也不知是如何解决的,在利用workspace
栏添加时,倒也能添加,只是不再main 分目录下,即便包含了xxx.h 文件,
编译时仍然会提示can no find xxx.h。
有关IAR 教程并总结出两种解决方法。
方法一:将头文件xxx.h 保存在当前工程目录下,通常和main.c 放在
同一个目录。
此时,无需在workspace 里面手工添加,只需要在main.c 或者
在对应的xxx.c 文件中#include xxx.h,编译成功完成后会自动出现在相应的.c。
MSP430寄存器的中文解释,熟知这些写起程序来很方便

#define P5DIR_ sfrb P5DIR
#define P5SEL_ sfrb P5SEL
#define P6IN_ const sfrb P6IN #define P6OUT_ sfrb P6OUT
0x0034 /* P6 输入寄存器 */ = P6IN_; 0x0035 /* P6 输出寄存器*/ = P6OUT_; 0x0036 /* P6 方向选择寄存器*/ = P6DIR_; 0x0037 /* P6 功能选择寄存器*/ = P6SEL_;
#define P4DIR_ sfrb P4DIR
#define P4SEL_ sfrb P4SEL
/************************************************************ * DIGITAL I/O Port5/6 I/O口寄存器定义PORT5和6 无中断功能
************************************************************/
#define P5IN_ const sfrb P5IN #define P5OUT_ sfrb P5OUT
0x0030 /* P5 输入寄存器 */ = P5IN_; 0x0031 /* P5 输出寄存器*/ = P5OUT_; 0x0032 /* P5 方向选择寄存器*/ = P5DIR_; 0x0033 /* P5 功能选择寄存器*/ = P5SEL_;
#define MPY_
0x0130 /* 无符号乘法 */
sfrw
MPY
= MPY_; 0x0132 /* 有符号乘法*/ = MPYS_; 0x0134 /* 无符号乘加 */ = MAC_; 0x0136 /* 有符号乘加 */ = MACS_; 0x0138 /* 第二乘数 */ = OP2_; 0x013A /* 低6位结果寄存器 */ = RESLO_; 0x013C /* 高6位结果寄存器 */ = RESHI_; 0x013E /*结果扩展寄存器 */ = SUMEXT_;
msp430学习的深度解析和总结

msp430学习的深度解析和总结一、MSP430开发环境建立1.安装IAR dor msp430 软件,软件带USB仿真器的驱动。
2.插入USB仿真器,驱动选择安装目录的/drivers/TIUSBFET3.建立一个工程,选择"option"选项,设置a、选择器件,在"General"项的"Target"标签选择目标器件b、选择输出仿真,在"Linker"项里的"Output"标签,选择输出"Debug information for C-SPY",以输出调试信息用于仿真。
c、若选择"Other",Output下拉框选择"zax-m"即可以输出hex文件用以烧录,注意,此时仿真不了。
d、选择"Debugger"项的"Setup"标签,"Driver"下拉框选择"FET Debugger"e、选择"FET Debugger"项的"Setup"标签,"Connection"下拉框选择"Texas Instrument USB-I"4.仿真器的接口,从左到右分别为" GND,RST,TEST,VCC"二、IO口数字输入/输出端口有下列特性:每个输入/输出位都可以独立编程。
允许任意组合输入、输出。
P1 和P2 所有8 个位都可以分别设置为中断。
可以独立操作输入和输出数据寄存器。
可以分别设置上拉或下拉电阻。
在介绍这四个I/O口时提到了一个“上拉电阻”那么上拉电阻又是一个什么东东呢?他起什么作用呢?都说了是电阻那当然就是一个电阻啦,当作为输入时,上拉电阻将其电位拉高,若输入为低电平则可提供电流源;所以如果P0口如果作为输入时,处在高阻抗状态,只有外接一个上拉电阻才能有效。
[最新]msp430头文件说明说明
![[最新]msp430头文件说明说明](https://img.taocdn.com/s3/m/57f048d8a0c7aa00b52acfc789eb172ded6399f7.png)
msp430头文件解释说明//1MSP430F149祥解对头文件做了比较详细的注释,记不清寄存器的人可以看看#ifndef __msp430x14x#define __msp430x14x/********************************************************** *** STANDARD BITS*********************************************************** */#define BIT0 0x0001#define BIT1 0x0002#define BIT2 0x0004#define BIT3 0x0008#define BIT4 0x0010#define BIT5 0x0020#define BIT6 0x0040#define BIT7 0x0080#define BIT8 0x0100#define BIT9 0x0200#define BITA 0x0400#define BITB 0x0800#define BITC 0x1000#define BITD 0x2000#define BITE 0x4000#define BITF 0x8000/********************************************************** *** STATUS REGISTER BITS*********************************************************** */#define C 0x0001#define Z 0x0002#define N 0x0004#define V 0x0100#define GIE 0x0008#define CPUOFF 0x0010#define OSCOFF 0x0020#define SCG0 0x0040#define SCG1 0x0080/* Low Power Modes coded with Bits 4-7 in SR */#ifndef __IAR_SYSTEMS_ICC /* Begin #defines for assembler */#define LPM0 CPUOFF#define LPM1 SCG0+CPUOFF#define LPM2 SCG1+CPUOFF#define LPM3 SCG1+SCG0+CPUOFF#define LPM4 SCG1+SCG0+OSCOFF+CPUOFF/* End #defines for assembler */#else /* Begin #defines for C */#define LPM0_bits CPUOFF#define LPM1_bits SCG0+CPUOFF#define LPM2_bits SCG1+CPUOFF#define LPM3_bits SCG1+SCG0+CPUOFF#define LPM4_bits SCG1+SCG0+OSCOFF+CPUOFF#include <In430.h>#define LPM0 _BIS_SR(LPM0_bits) /* Enter Low Power Mode 0 */#define LPM0_EXIT _BIC_SR(LPM0_bits) /* Exit Low Power Mode 0 */#define LPM1 _BIS_SR(LPM1_bits) /* Enter Low Power Mode 1 */#define LPM1_EXIT _BIC_SR(LPM1_bits) /* Exit Low Power Mode 1 */#define LPM2 _BIS_SR(LPM2_bits) /* Enter Low Power Mode 2 */#define LPM2_EXIT _BIC_SR(LPM2_bits) /* Exit Low Power Mode 2 */#define LPM3 _BIS_SR(LPM3_bits) /* Enter Low Power Mode 3 */#define LPM3_EXIT _BIC_SR(LPM3_bits) /* Exit Low Power Mode 3 */#define LPM4 _BIS_SR(LPM4_bits) /* Enter Low Power Mode 4 */#define LPM4_EXIT _BIC_SR(LPM4_bits) /* Exit Low Power Mode 4 */#endif /* End #defines for C *//********************************************************** *** PERIPHERAL FILE MAP*********************************************************** *//********************************************************** *** 特殊功能寄存器地址和控制位*********************************************************** *//*中断使能1*/#define IE1_ 0x0000sfrb IE1 = IE1_;#define WDTIE 0x01 /*看门狗中断使能*/#define OFIE 0x02 /*外部晶振故障中断使能*/#define NMIIE 0x10 /*非屏蔽中断使能*/#define ACCVIE 0x20 /*可屏蔽中断使能/flash 写中断错误*/#define URXIE0 0x40 /*串口0接收中断使能*/#define UTXIE0 0x80 /*串口0发送中断使能*//*中断标志1*/#define IFG1_ 0x0002sfrb IFG1 = IFG1_;#define WDTIFG 0x01 /*看门狗中断标志*/#define OFIFG 0x02 /*外部晶振故障中断标志*/ #define NMIIFG 0x10 /*非屏蔽中断标志*/#define URXIFG0 0x40 /*串口0接收中断标志*/#define UTXIFG0 0x80 /*串口0发送中断标志*//* 中断模式使能1 */#define ME1_ 0x0004sfrb ME1 = ME1_;#define URXE0 0x40 /* 串口0接收中断模式使能 */#define USPIE0 0x40 /* 同步中断模式使能*/#define UTXE0 0x80 /* 串口0发送中断模式使能 *//* 中断使能2 */#define IE2_ 0x0001sfrb IE2 = IE2_;#define URXIE1 0x10 /* 串口1接收中断使能*/#define UTXIE1 0x20 /* 串口1发送中断使能*//* 中断标志2 */#define IFG2_ 0x0003sfrb IFG2 = IFG2_;#define URXIFG1 0x10 /* 串口1接收中断标志*/#define UTXIFG1 0x20 /* 串口1发送中断标志*//* 中断模式使能2 */#define ME2_ 0x0005sfrb ME2 = ME2_;#define URXE1 0x10 /* 串口1接收中断模式使能 */#define USPIE1 0x10 /* 同步中断模式使能*/#define UTXE1 0x20 /* 串口1发送中断模式使能 *//********************************************************** *** 看门狗定时器的寄存器定义*********************************************************** */#define WDTCTL_ 0x0120sfrw WDTCTL = WDTCTL_;#define WDTIS0 0x0001 /*选择WDTCNT的四个输出端之一*/#define WDTIS1 0x0002 /*选择WDTCNT的四个输出端之一*/#define WDTSSEL 0x0004 /*选择WDTCNT的时钟源*/#define WDTCNTCL 0x0008 /*清除WDTCNT端: 为1时从0开始计数*/#define WDTTMSEL 0x0010 /*选择模式 0: 看门狗模式; 1: 定时器模式*/#define WDTNMI 0x0020 /*选择NMI/RST 引脚功能 0:为 RST; 1:为NMI*/#define WDTNMIES 0x0040 /*WDTNMI=1时.选择触发延 0:为上升延 1:为下降延*/#define WDTHOLD 0x0080 /*停止看门狗定时器工作 0:启动;1:停止*/#define WDTPW 0x5A00 /* 写密码:高八位*//* SMCLK= 1MHz定时器模式 */#define WDT_MDLY_32 WDTPW+WDTTMSEL+WDTCNTCL /* TSMCLK*2POWER15=32ms 复位状态 */#define WDT_MDLY_8 WDTPW+WDTTMSEL+WDTCNTCL+WDTIS0 /* TSMCLK*2POWER13=8.192ms " */#define WDT_MDLY_0_5 WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1 /* TSMCLK*2POWER9=0.512ms " */#define WDT_MDLY_0_064WDTPW+WDTTMSEL+WDTCNTCL+WDTIS1+WDTIS0 /*TSMCLK*2POWER6=0.512ms " *//* ACLK=32.768KHz 定时器模式*/#define WDT_ADLY_1000 WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL /* TACLK*2POWER15=1000ms " */#define WDT_ADLY_250WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS0 /*TACLK*2POWER13=250ms " */#define WDT_ADLY_16WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1 /*TACLK*2POWER9=16ms " */#define WDT_ADLY_1_9WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0 /*TACLK*2POWER6=1.9ms " *//* SMCLK=1MHz看门狗模式 */#define WDT_MRST_32 WDTPW+WDTCNTCL /* TSMCLK*2POWER15=32ms 复位状态 */#define WDT_MRST_8 WDTPW+WDTCNTCL+WDTIS0 /* TSMCLK*2POWER13=8.192ms " */#define WDT_MRST_0_5 WDTPW+WDTCNTCL+WDTIS1 /* TSMCLK*2POWER9=0.512ms " */#define WDT_MRST_0_064 WDTPW+WDTCNTCL+WDTIS1+WDTIS0 /* TSMCLK*2POWER6=0.512ms " *//* ACLK=32KHz看门狗模式 */#define WDT_ARST_1000 WDTPW+WDTCNTCL+WDTSSEL /* TACLK*2POWER15=1000ms " */#define WDT_ARST_250 WDTPW+WDTCNTCL+WDTSSEL+WDTIS0 /* TACLK*2POWER13=250ms " */#define WDT_ARST_16 WDTPW+WDTCNTCL+WDTSSEL+WDTIS1 /* TACLK*2POWER9=16ms " */#define WDT_ARST_1_9WDTPW+WDTCNTCL+WDTSSEL+WDTIS1+WDTIS0 /*TACLK*2POWER6=1.9ms " *//************************************************************硬件乘法器的寄存器定义************************************************************/#define MPY_ 0x0130 /* 无符号乘法 */sfrw MPY = MPY_;#define MPYS_ 0x0132 /* 有符号乘法*/sfrw MPYS = MPYS_;#define MAC_ 0x0134 /* 无符号乘加 */sfrw MAC = MAC_;#define MACS_ 0x0136 /* 有符号乘加 */sfrw MACS = MACS_;#define OP2_ 0x0138 /* 第二乘数 */sfrw OP2 = OP2_;#define RESLO_ 0x013A /* 低6位结果寄存器 */sfrw RESLO = RESLO_;#define RESHI_ 0x013C /* 高6位结果寄存器 */sfrw RESHI = RESHI_;#define SUMEXT_ 0x013E /*结果扩展寄存器 */const sfrw SUMEXT = SUMEXT_;/********************************************************** *** DIGITAL I/O Port1/2 寄存器定义有中断功能*********************************************************** */#define P1IN_ 0x0020 /* P1 输入寄存器 */const sfrb P1IN = P1IN_;#define P1OUT_ 0x0021 /* P1 输出寄存器 */sfrb P1OUT = P1OUT_;#define P1DIR_ 0x0022 /* P1 方向选择寄存器 */sfrb P1DIR = P1DIR_;#define P1IFG_ 0x0023 /* P1 中断标志寄存器*/sfrb P1IFG = P1IFG_;#define P1IES_ 0x0024 /* P1 中断边沿选择寄存器*/sfrb P1IES = P1IES_;#define P1IE_ 0x0025 /* P1 中断使能寄存器 */sfrb P1IE = P1IE_;#define P1SEL_ 0x0026 /* P1 功能选择寄存器*/ sfrb P1SEL = P1SEL_;#define P2IN_ 0x0028 /* P2 输入寄存器 */const sfrb P2IN = P2IN_;#define P2OUT_ 0x0029 /* P2 输出寄存器 */sfrb P2OUT = P2OUT_;#define P2DIR_ 0x002A /* P2 方向选择寄存器 */sfrb P2DIR = P2DIR_;#define P2IFG_ 0x002B /* P2 中断标志寄存器 */sfrb P2IFG = P2IFG_;#define P2IES_ 0x002C /* P2 中断边沿选择寄存器*/sfrb P2IES = P2IES_;#define P2IE_ 0x002D /* P2 中断使能寄存器 */sfrb P2IE = P2IE_;#define P2SEL_ 0x002E /* P2 功能选择寄存器 */ sfrb P2SEL = P2SEL_;/********************************************************** *** DIGITAL I/O Port3/4寄存器定义无中断功能*********************************************************** */#define P3IN_ 0x0018 /* P3 输入寄存器 */const sfrb P3IN = P3IN_;#define P3OUT_ 0x0019 /* P3 输出寄存器 */sfrb P3OUT = P3OUT_;#define P3DIR_ 0x001A /* P3 方向选择寄存器 */sfrb P3DIR = P3DIR_;#define P3SEL_ 0x001B /* P3 功能选择寄存器*/ sfrb P3SEL = P3SEL_;#define P4IN_ 0x001C /* P4 输入寄存器 */const sfrb P4IN = P4IN_;#define P4OUT_ 0x001D /* P4 输出寄存器 */sfrb P4OUT = P4OUT_;#define P4DIR_ 0x001E /* P4 方向选择寄存器 */sfrb P4DIR = P4DIR_;#define P4SEL_ 0x001F /* P4 功能选择寄存器 */ sfrb P4SEL = P4SEL_;/********************************************************** *** DIGITAL I/O Port5/6 I/O口寄存器定义PORT5和6 无中断功能*********************************************************** */#define P5IN_ 0x0030 /* P5 输入寄存器 */const sfrb P5IN = P5IN_;#define P5OUT_ 0x0031 /* P5 输出寄存器*/sfrb P5OUT = P5OUT_;#define P5DIR_ 0x0032 /* P5 方向选择寄存器*/sfrb P5DIR = P5DIR_;#define P5SEL_ 0x0033 /* P5 功能选择寄存器*/ sfrb P5SEL = P5SEL_;#define P6IN_ 0x0034 /* P6 输入寄存器 */const sfrb P6IN = P6IN_;#define P6OUT_ 0x0035 /* P6 输出寄存器*/sfrb P6OUT = P6OUT_;#define P6DIR_ 0x0036 /* P6 方向选择寄存器*/sfrb P6DIR = P6DIR_;#define P6SEL_ 0x0037 /* P6 功能选择寄存器*/ sfrb P6SEL = P6SEL_;//2/********************************************************** *** USART 串口寄存器"UCTL","UTCTL","URCTL"定义的各个位可串口1 串口2公用*********************************************************** *//* UCTL 串口控制寄存器*/#define PENA 0x80 /*校验允许位*/#define PEV 0x40 /*偶校验为0时为奇校验*/#define SPB 0x20 /*停止位为2 为0时停止位为1*/#define CHAR 0x10 /*数据位为8位为0时数据位为7位*/#define LISTEN 0x08 /*自环模式(发数据同时在把发的数据接收回来)*/#define SYNC 0x04 /*同步模式为0异步模式*/#define MM 0x02 /*为1时地址位多机协议(异步) 主机模式(同步);为0时线路空闲多机协议(异步) 从机模式(同步)*/#define SWRST 0x01 /*控制位*//* UTCTL 串口发送控制寄存器*/#define CKPH 0x80 /*时钟相位控制位(只同步方式用)为1时时钟UCLK延时半个周期*/#define CKPL 0x40 /*时钟极性控制位为1时异步与UCLK相反;同步下降延有效*/#define SSEL1 0x20 /*时钟源选择位:与SSEL0组合为0,1,2,3四种方式*/#define SSEL0 0x10 /*"0"选择外部时钟,"1"选择辅助时钟,"2","3"选择系统子时钟 */#define URXSE 0x08 /*接收触发延控制位(只在异步方式下用)*/#define TXWAKE 0x04 /*多处理器通信传送控制位(只在异步方式下用)*/#define STC 0x02 /*外部引脚STE选择位为0时为4线模式为1时为3线模式*/#define TXEPT 0x01 /*发送器空标志*//* URCTL 串口接收控制寄存器同步模式下只用两位:FE和OE*/#define FE 0x80 /*帧错标志*/ #define PE 0x40 /*校验错标志位*/#define OE 0x20 /*溢出标志位*/#define BRK 0x10 /*打断检测位*/#define URXEIE 0x08 /*接收出错中断允许位*/#define URXWIE 0x04 /*接收唤醒中断允许位*/#define RXWAKE 0x02 /*接收唤醒检测位*/ #define RXERR 0x01 /*接收错误标志位*//********************************************************** *** USART 0 串口0寄存器定义*********************************************************** */#define U0CTL_ 0x0070 /* 串口0基本控制寄存器*/sfrb U0CTL = U0CTL_;#define U0TCTL_ 0x0071 /* 串口0发送控制寄存器 */sfrb U0TCTL = U0TCTL_;#define U0RCTL_ 0x0072 /* 串口0接收控制寄存器 */sfrb U0RCTL = U0RCTL_;#define U0MCTL_ 0x0073 /* 波特率调整寄存器 */sfrb U0MCTL = U0MCTL_;#define U0BR0_ 0x0074 /* 波特率选择寄存器0 */sfrb U0BR0 = U0BR0_;#define U0BR1_ 0x0075 /* 波特率选择寄存器1 */sfrb U0BR1 = U0BR1_;#define U0RXBUF_ 0x0076 /* 接收缓存寄存器 */const sfrb U0RXBUF = U0RXBUF_;#define U0TXBUF_ 0x0077 /* 发送缓存寄存器 */sfrb U0TXBUF = U0TXBUF_;/* 改变的寄存器名定义 */#define UCTL0_ 0x0070 /* UART 0 Control */sfrb UCTL0 = UCTL0_;#define UTCTL0_ 0x0071 /* UART 0 Transmit Control */sfrb UTCTL0 = UTCTL0_;#define URCTL0_ 0x0072 /* UART 0 Receive Control */sfrb URCTL0 = URCTL0_;#define UMCTL0_ 0x0073 /* UART 0 Modulation Control */sfrb UMCTL0 = UMCTL0_;#define UBR00_ 0x0074 /* UART 0 Baud Rate 0 */ sfrb UBR00 = UBR00_;#define UBR10_ 0x0075 /* UART 0 Baud Rate 1 */sfrb UBR10 = UBR10_;#define RXBUF0_ 0x0076 /* UART 0 Receive Buffer */const sfrb RXBUF0 = RXBUF0_;#define TXBUF0_ 0x0077 /* UART 0 Transmit Buffer */ sfrb TXBUF0 = TXBUF0_;#define UCTL_0_ 0x0070 /* UART 0 Control */sfrb UCTL_0 = UCTL_0_;#define UTCTL_0_ 0x0071 /* UART 0 Transmit Control */sfrb UTCTL_0 = UTCTL_0_;#define URCTL_0_ 0x0072 /* UART 0 Receive Control */sfrb URCTL_0 = URCTL_0_;#define UMCTL_0_ 0x0073 /* UART 0 Modulation Control */sfrb UMCTL_0 = UMCTL_0_;#define UBR0_0_ 0x0074 /* UART 0 Baud Rate 0 */sfrb UBR0_0 = UBR0_0_;#define UBR1_0_ 0x0075 /* UART 0 Baud Rate 1 */sfrb UBR1_0 = UBR1_0_;#define RXBUF_0_ 0x0076 /* UART 0 Receive Buffer */ const sfrb RXBUF_0 = RXBUF_0_;#define TXBUF_0_ 0x0077 /* UART 0 Transmit Buffer */sfrb TXBUF_0 = TXBUF_0_;/********************************************************** *** USART 1 串口1寄存器定义*********************************************************** */#define U1CTL_ 0x0078 /* 串口1基本控制寄存器*/sfrb U1CTL = U1CTL_;#define U1TCTL_ 0x0079 /* 串口1发送控制寄存器 */sfrb U1TCTL = U1TCTL_;#define U1RCTL_ 0x007A /* 串口1接收控制寄存器 */sfrb U1RCTL = U1RCTL_;#define U1MCTL_ 0x007B /* 波特率调整控制寄存器 */sfrb U1MCTL = U1MCTL_;#define U1BR0_ 0x007C /* 波特率选择寄存器0 */sfrb U1BR0 = U1BR0_;#define U1BR1_ 0x007D /* 波特率选择寄存器1 */sfrb U1BR1 = U1BR1_;#define U1RXBUF_ 0x007E /* 接收缓存 */const sfrb U1RXBUF = U1RXBUF_;#define U1TXBUF_ 0x007F /* 发送缓存 */ sfrb U1TXBUF = U1TXBUF_;/* 改变的寄存器名定义 */#define UCTL1_ 0x0078 /* UART 1 C。
IAR_FOR_MSP430_入门教程

IAR FOR 430 入门教程主要内容:一.IAR FOR 430 简介二.IAR软件的安装及破解三.软件的设置与调试一.IAR FOR 430 简介IAR Systems是全球领先的嵌入式系统开发工具和服务的供应商。
公司成立于1983年,迄今已有27年,提供的产品和服务涉及到嵌入式系统的设计、开发和测试的每一个阶段,包括:带有C/C++编译器和调试器的集成开发环境(IDE)、实时操作系统和中间件、开发套件、硬件仿真器以及状态机建模工具。
国内普及的MSP430开发软件种内不多,主要有IAR公司的Embedded Workbench for MSP430(简称为EW430)和AQ430。
目前IAR的用户居多。
IAR EW430软件提供了工程管理,程序编辑,代码下载,调试等所有功能。
并且软件界面和操作方法与IAR EW forARM等开发软件一致。
因此,学会了IAR EW430,就可以很顺利地过渡到另一种新处理器的开发工作。
现在IAR的最新版本为V5.10版,不过本文主要是以V4.11版讲解。
各个版本之间差异不大。
掌握了V4.11,别的版本也能很快上手。
二.IAR软件的安装及破解(1)软件的下载及破解IAR EW430在google or百度上很容易找到下载连接,也可以在IAR官网上下载,不过一定要将与版本相配套的注册机一并下载。
(2)软件的安装1.运行ew430-ev-cd-411b.exe2. 点击Next3点击AcceptName, Company 自己可以随意填License(序列号)就得用到注册机了运行注册机(iarkg.exe),可以看到首先在product中选EmbededWorkbenchForMSP430 v4.11B然后点击Generate生成License number和License Key将License number输到Licinse#中4.点击Next将注册机中的LicenseKey粘贴进去5点击Next,出现修改安装路径,这个随意,按个人喜好了6修改好后,点击Next选择Full,继续Next7 之后基本不用设置什么了,一路Next就OK了8出现点击Finish大功告成!注意:1.License number和License Key必须配套。
01A01---MSP430概述 IAR软件介绍

MSP430概述及IAR使用演讲者:技术部TI 微控制器列表DSC C2000TM作者:利尔达技术部150 MIPS高性能 • 电机控制 • 数字电源 工业标准 • 工业 • 医疗器械 测量 • 表类计量 • 便携式仪器TMS470 16/32-bitARM7TDMIMSP430Ultra-low Power8-bit性能2TI 嵌入式处理器产品线Microcontrollers16-bitMSP430 Ultra-Low Power Up to 25 MHz Flash 1 KB to 256 KB Analog I/O, ADC LCD, USB, RF Measurement, Sensing, General Purpose $0.49 to $9.00作者:利尔达技术部ARM-Based32-bit ARMStellaris M3 Industry Std Low Power Up to 100 MHz Flash 8kB to 256kB USB (H/D/OTG), ENET(PHY, 1588), ADC, PWM, QVGA Host Control $2.00 to $8.00DSPARM + DSP DSPC647x, C64x+, C55x32-bit Real-timeC2000™ Fixed & Floating Point Up to 150 MHz Flash 32 KB to 512 KB PWM, ADC, CAN, SPI, I2C Motor Control, Digital Power, Lighting $1.50 to $20.00ARM+ARM9 Cortex A-8C64x+ plus ARM9/Cortex A-8Industry-Std Core, Industry-Std Core + Leadership DSP Performance High-Perf GPP DSP for Signal Proc. Accelerators MMU USB, LCD, MMC, EMAC Linux/WinCE User Apps $8.00 to $35.00 4800 MMACs/ 1.07 DMIPS/MHz MMU, Cache VPSS, USB, EMAC, MMC Linux/Win + Video, Imaging, Multimedia $12.00 to $65.00 24,000 MMACS Up to 3 MB L2 Cache 1G EMAC, SRIO, DDR2, PCI-66 Comm, WiMAX, Industrial/ Medical Imaging $4.00 to $99.00+Software & Dev. Tools3什么是MSP430?MSP430系列单片机是美国Texas Instruments (TI) 从1996 年开始推向市场的一种16位 RISC 架构、超低功耗的混合信号 处理器(Mixed Signal Processor)。
MSP430相关说明文档

1.关于目标板供电,这个问题反映回来最多。
如果用仿真器供电,那么VCCI脚一定要接地。
VCCI是仿真器检测目标板电源的。
如果跟VCCO 接在一起,很可能导致仿真器不输出电压,导致IAR报错,找不到芯片。
如果用外部电源供电,那么VCCI一定要接到目标板电源(一般是3.3V),VCCO悬空,一定不要跟目标板电源相连,否则,有时可能会导致仿真器输出,两个电源短路,出现意想不到的情况;2. 系统中显示USB设备有问题:这个问题有可能是USB没有安装好,有时也可能系统问题。
如果驱动装好了。
电脑重启一下可能就好了。
如果还不行。
换台电脑再试一下。
3. 有时430单片机可能在死机状态,导致仿真器通过JTAG查询时,没有响应,导致IAR不能下载。
这时,拔掉JTAG 14pin插座,断开目标板电源,过至少1min时间,最好用镊子把目标板电源放电完,再插上JTAG插座,进行仿真。
4. 判断仿真器是否正常的一个简单的办法是:a) 硬件管理器中USB 设备工作正常(显示为msp430uif COMx口)。
b), 插入USB后,电脑有识别到新硬件的声音指示(开外放)代表仿真器自检通过。
那么仿真器一般不会有问题了。
重点在目标板上找原因,一般是不会有问题的。
5. 安装MSP430的LSD-FET430UIF USB仿真器驱动时出错。
"INF 找不到所需的段落" 的解决方法:首先这是您操作系统的问题a.打开“控制面板–管理工具–服务”,查看“smart card是否启用”,没有的话,请手动启动。
如果“smart card”服务也无法启用,可检查“scardsvr”服务是否存在,且已经启动,如果没有启动请手动启动,然后设为“自动”。
b.如果该服务不存在,则按以下步骤操作,单击“开始–运行”输入cmd 打开命令提示符窗口,先执行命令“scardsvr reinstall”,接着在执行命令“regsvr32 scardssp.dll”重新注册scardssp.dll。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、#define BIT0 (0×0001) //(0×0001)不是地址,而是一个16进制数值。
例1、P3DIR |= BIT3;实际上也可以写成P3DIR |= 0×0008;
意思是将P3口的默认上电值0×0000和0×0008相与,设置P3口的第三位(即P3.3)管脚作输出使用。
例2、WDTCTL = WDTPW + WDTHOLD;实际上就是WDTCTL=0×5A80;
你可以在头文件中查到#define WDTPW (0×5A00)和#define WDTHOLD (0×0080)。
WDTCTL是看门狗的控
制寄存器,在msp430的User’Guide中有说明:当它的值为0×5A80时停止看门狗定时。
那为什么我们不直接写成WDTCTL=0×5A80;呢?这样的话程序的可读性会很差。
0×5A80只是一个数值,当你下次再看你写的程序,或者别人读你的程序时,就不明白WDTCTL=0×5A80;的
意思了。
如果写成WDTCTL = WDTPW + WDTHOLD;就好理解多了:
WDTPW(Watchdog timer password,看门狗的密码,WDTCTL的高8位):只有WDTCTL的高8位为
0×5A时才能对WDTCTL寄存器进行写操作。
WDTHOLD(Watchdog timer hold,WDTCTL的第7位):当WDTCTL的第7位为1时,停止看门狗计时。
这样我们通过PW,HOLD就可以轻松的知道WDTCTL = WDTPW + WDTHOLD;是做什么的了。
可以看出
msp430的头文件是很人性化的。
2、当然也有表示地址的,例如,头文件中有以下部分:
#ifdef __IAR_SYSTEMS_ASM__
#define DEFC(name, address) sfrb name = address
#define DEFW(name, address) sfrw name = address;
///运用了可变参数宏的宏定义格式:#define 宏符号名(参数表) 宏体;;宏体中就是写出参数表中各个
//参数之间的关系。
#endif
……
……
#define P6OUT_ (0×0035)
DEFC( P6OUT , P6OUT_) //这里就是用了以上的可变参数宏。
DEFC( P6OUT , P6OUT_) 就表
//示:sfrb P6OUT = P6OUT_
这里的0×0035就是指P6OUT这个寄存器的地址了。