IAR430头文件
- 格式:doc
- 大小:153.00 KB
- 文档页数:26
Keil中头文件很重要,对于51单片机常使用reg51.h、reg52.h或AT89x51.h。
在:目标盘X:/keil/C51/INC 文件夹里。
INC文件夹根目录里就有不少头文件,并且里面还有很多以公司分类的文件夹,里面也都是相关产品的头文件。
我打开Atmel文件夹,看到相当多的头文件,其中包括reg51.h,也有AT89x51.h。
我把AT89x51.h头文件拷贝到INC根目录里面,再编译程序发现AT89x51.h可以使用了。
原来Keil提供了足够的头文件,我们使用的时候只需把对应头文件拷贝到INC文件夹里就可以了。
我把宏晶公司提供的STC单片机的头文件STC89C51RD_RC.h拷贝到INC文件夹里也可以正常使用。
在INC文件夹里还有dallas的单片机DS89C4xx系列单片机的头文件DS89C4xx.h,大家使用时直接拷贝出来调用就可以了。
还有dallas的单片机DS89C4xx系列单片机的头文件DS89C4xx.h,大家使用时直接拷贝出来调用就可以了。
/********************************************************* 文件名称:* IIC.c* 文件说明:* 使用口线模拟IIC* 程序使用波特率为2400,程序运行时需要在pc机上使用一个串口* 接收发送程序,任意发送字符,接收的字符为十六进制时间数据* MSP-FET430P149 Demo - Basic Clock, MCLK Sourced from HF XTAL XT2* L.TCH* Feb 2007* Built with IAR Embedded Workbench Version: 3.10A*******************************************************//*********************************************************/#include <MSP430X14X.h>/********************************************************** 定义*********************************************************/#define RST BIT7#define SDA BIT6#define SCLK BIT5char pbuf[7];char clok[7]={0x16,0x15,0x14,0x13,0x12,0x04,0x07};char cbuf;char bbuf;char *pda;char *pck;char *prg;/************************************************说明************************************************/void Port_Init(void);void Init_CLK(void);void Init_UART0(void);void RST_Enable(void);void RST_Disable(void);void SCLK_HI(void);void SCLK_LO(void);void WriteByte(char nVal);char ReadByte(void);void WriteTo1302(char nAddr, char nVal);char ReadFrom1302(char nAddr);void BurstWriteTime(char *pWClock);void BurstReadTime(char *pRClock);void BurstWriteRam(char *pWReg);void BurstReadRam(char *pRReg);void SetTime(char *pClock);void GetTime(char pTime[]);/***********************************************/void Port_Init(void){P1DIR |= RST; //设置CE为输出管脚P1DIR |= RST; //设置SCLK为输出管脚P1DIR |= SCLK;P2DIR |= 0x02; // Set P2.1 to output directionreturn;}void Init_CLK(void){unsigned int i;BCSCTL1 = 0X00; //将寄存器的内容清零//XT2震荡器开启//LFTX1工作在低频模式//ACLK的分频因子为1do{IFG1 &= ~OFIFG; // 清除OSCFault标志for (i = 0xFF; i > 0; i--);}while ((IFG1 & OFIFG) == OFIFG); // 如果OSCFault =1BCSCTL1 &= ~(XT2OFF + XTS); //open XT2, LFTX2 select low frequency //BCSCTL1 |= RSEL0 + RSEL1 + RSEL2; //DCO Rsel=7(Freq=3200k/25摄氏度)//BCSCTL1 |= 0x07;BCSCTL2 += SELM1; //MCLK的时钟源为TX2CLK,分频因子为1BCSCTL2 += SELS; //SMCLK的时钟源为TX2CLK,分频因子为1return;}void Init_UART0(void){U0CTL = 0X00; //将寄存器的内容清零UCTL0|=SWRST;P3SEL |= 0x30; // P3.4,5 = USART0 TXD/RXDME1 |= UTXE0 + URXE0; // Enable USART0 TXD/RXD UCTL0 |= CHAR; // 8-bit characterUTCTL0 |= SSEL1; // UCLK = SMCLKUBR00 = 0xD3; // 3.58Mhz/2400 -1491UBR10 = 0x05; //UMCTL0 = 0x00; // no modulationUCTL0 &= ~SWRST; // Initialize USART state machine IE1 |= URXIE0; // Enable USART0 RX interruptIE1 &= ~UTXIE0; // Disable USART TX interrupt return;}void RST_Enable(void){P1OUT |= RST;return;}void RST_Disable(void){P1OUT &= ~(RST);return;}void SCLK_HI(void){P1OUT |= SCLK;return;}void SCLK_LO(void){P1OUT &= ~(SCLK);return;}/*-------------------------------* 功能: 写入1Byte数据* 调用:* 输入: nVal 写入的数据* 返回值: 无*------------------------------*/void WriteByte(char nVal){char i,j;char nTemp = nV al;char nSend;P1DIR |= SDA; //设置DATA为输出管脚_NOP();_NOP();_NOP();_NOP();for(i = 0; i < 8; i++) //发8位,从0位开始{nSend = (nTemp & 0x01);if(nSend == 1){P1OUT |= SDA;}else{P1OUT &= ~(SDA);}SCLK_HI();for(j = 10;j > 0;j--) ;SCLK_LO();for(j = 10;j > 0;j--) ;nTemp >>= 1; //从0位开始,发8位}return;}/*--------------------------------------* 功能: 读取1Byte数据* 调用:* 输入:* 返回值: nTemp*------------------------------------*/char ReadByte(void){char nTemp = 0;int i;int j;P1DIR &=~SDA; //设置DATA为输入管脚_NOP();_NOP();_NOP();_NOP();for(i = 0; i < 8; i++) //接受8位{SCLK_HI();for(j = 10;j > 0;j--);SCLK_LO();_NOP();_NOP();if(P1IN & SDA) //如果第i位是高电平置1{nTemp |= (0x01 << i);}for(j = 10;j > 0;j--);}return nTemp;}/*-----------------------------------------* 功能: 往DS1302写入1Byte数据* 调用:* 输入: nVal 写入的数据* 返回值: 无*------------------------------------------*/void WriteTo1302(char nAddr, char nVal){RST_Disable();SCLK_LO();RST_Enable();_NOP();_NOP();_NOP();_NOP();WriteByte(nAddr); //地址,命令WriteByte(nVal); //写1Byte数据SCLK_HI();RST_Disable();return;}/*-----------------------------------------* 功能: 从DS1302读取1Byte数据* 调用:* 输入:* 返回值: nDta*-----------------------------------------*/char ReadFrom1302(char nAddr){char nData;RST_Disable();SCLK_LO();RST_Enable();_NOP();_NOP();_NOP();_NOP();WriteByte(nAddr); //地址,命令nData = ReadByte(); //读1Byte数据SCLK_HI();RST_Disable();cbuf = nData; //return(nData);}/*-------------------------------------* 功能: 往DS1302写入时钟数据(多字节方式)* 调用:* 输入: pClock[]: 时钟数据地址格式为: 秒分时日月星期年控制* 8Byte (BCD码)* 返回值: 无*----------------------------------*/void BurstWriteTime(char *pClock){char i;WriteTo1302(0x8e,0x00); //控制命令,写操作.。
1-问:JTAG 与I/O 功能之间的MSP430 引脚复用答:四个引脚- 在20 与28 引脚MSP430F1xx 器件上均同时具有I/O 与JTAG 功能。
这些引脚的默认功能是,当器件通电时具有I/O 功能。
当测试引脚拉高时,则将这些引脚选为JTAG。
当使用交互式系统内调试程序时,这些器件的FET 会将这些引脚处于JTAG 模式下。
如欲了解有关在使用调试程序时从JTAG 模式发布引脚的信息,敬请参阅《FET 工具用户指南》。
注:如果将外部电路附加到共享引脚上,则必须考虑JTAG 信号对引脚的相互影响。
如果通过JTAG 对该器件进行系统内交互式编程或调试,则需考虑电路将产生的影响。
如果电路将增加共享引脚的负载或偏置,进而干扰JTAG 通信,则应考虑这一点。
更高引脚计数器件具有仅可用于调试与编程的专用JTAG 引脚。
[在使用MSP430 JTAG 的管脚做其它控制应用的时候,要注意,此时会影响到FET 的调试,导致无法下载单片机程序或无法调试,建议引脚足够应用的时候,避开使用JTAG 复用I/O 功能]2-问:MSP430 ADC12 模块的速度答:ADC12 的转换速率是转换所需的ADC12CLK 以及时钟的一项功能。
ADC12CLK 的近似最小值与最大值分别为500kHz 及。
速度最快的整个转换过程可以在17 个周期内完成(13 个周期进行转换,4 个周期进行采样及保持)。
17 = 382ksps。
ADC12 的运行速率不能低于最小值的ADC12CLK,但在软件的控制下,采样门可以无限制保持打开状态。
如欲了解有关采样与转换时间规范的更多详情,敬请参阅数据表。
3-问:MSP430 I/O 引脚的汲极电流与源极电流答:MSP430 未指定来自I/O 引脚的最大绝对电流。
如欲了解V oh 与V ol 的规范,敬请参阅数据表。
其中显示了每个I/O 引脚均可提供几毫安的电流,但输出电压将随着电流的增大而发生变化。
MSP430F552X中文手册及例程(耐心开完,必有收获)一、先写一篇开个头:这样快速闯入MSP430学习过程进入各个电子产品公司的网站,招聘里面嵌入式占据了大半工程师职位。
广义的嵌入式无非几种:传统的什么51单片机、 MSP430称做嵌入式微控制器;ARM是嵌入式微处理器;当然还有DSP;FPGA。
我们现在就不说别的,就说MSP430单片机,多数想学MSP430的童鞋,对89C51内核系列的单片机是很熟悉的,为了加深对MSP430 系列单片机的认识吗,迅速闯入MSP430学习过程,就必须彻底了解MSP430单片机,我们不妨将51单片机和MSP430两者进行一下比较。
第一点, 51内核单片机是8 位单片机。
其指令是采用的被称为“ CISC ”的复杂指令集,共具有111 条指令。
而MSP430 单片机是16 位的单片机,采用了精简指令集( RISC )结构,只有简洁的27 条指令,大量的指令则是模拟指令,众多的寄存器以及片内数据存储器都可参加多种运算。
这些内核指令均为单周期指令,功能强,运行的速度快。
第二点,MCU主要分为两种工作模式:待机与执行。
51内核单片机正常情况下消耗的电流为mA级,在掉电状态下,其耗电电流仍约为3mA左右;即使在掉电方式下,电源电压可以下降到2V ,但是为了保存内部RAM 中的数据,还需要提供约50uA的电流。
而430单片机功耗是在uA级的,工作电流极小,并且超低功耗,关断状态下的电流仅为0.1μA,待机电流为0.8μA,常规模式下的(250μA/1MIPS@3V),端口漏电流不足50 nA,并可零功耗掉电复位(BOR)。
另外,该芯片属低电器件,仅需1.8~3.6V电压供电,因而可有效降低系统功耗。
MSP430将低功耗模式扩展为7种,分别对应不同应用场合及任务的低功耗方式。
以睡眠模式为例,包括深度睡眠模式RTC:只有时钟在跑而其他都不动,目前,TI宣布其MSP430在RTC模式下最低功耗仅为360nA。
Lite FET-Pro430 Elprotronic详细使用方法
1:首先安装Lite FET-Pro430 Elprotronic,点击Setup.exe。
具体如何安装就不做详细介绍,直接下一步到最后。
2:成功安装之后,重启电脑,启动软件,界面如下
图所示:
3:详细介绍配置方法
a:把IAR安装目录下的hil.dll和msp430.dll复制到Lite FET-Pro430 Elprotronic的安装目录下,然后把msp430.dll更改为msp430-TI.dll。
IAR的安装目录:
Lite FET-Pro430的安装目录:
b:Lite FET-Pro430菜单设置
首先打开软件,点击菜单栏的Setup,再选择Connection/Device
Reset,如图所示:
然后自设置图中指示的1处和2处,然后确定。
红色1:一个是JTAG口另一个是Spy Bi Wire接口
红色2:选择USB或者并口
最后回到主界面如下图所示:
红色1:选择要下载的HEX或者TXT,可执行文件红色2:选择要烧录的硬件型号选择
红色3:点击AUTO PROG 下载程序
红色4:程序下载成功后,点击RESET。
项目名称430多功能编程器编制人吴邦米修改人郝强第一部分:概述LSD-PRGS430-IIIA以完成对MSP430FLASH*该脚与BSL 接口引脚兼容。
(四)(四)BSLBSL 目标板接口LSD-PRGS430-IIIA 多功能离线编程器通过BSL 接口,方便将程序写入,也可以将已烧断熔丝的MSP430系列单片机进行重新写入程序。
BSL 接口定义如下:(五)SBW 目标板接口SBW 接口定义如下:对于不同的型号芯片,对于不同的型号芯片,BSLBSL 发送和接收引脚不同,请看相关器件数据手册BSL 部分的说明。
如:F41X 系列P1.0接BTXD,P1.1接BRXD;而F15X,F16X 系列P1.1接BTXD,P2.2接BRXD。
对于未使用的JTAG JTAG,,BSL 引脚引脚,,应为悬空处理,外部不得接入电源应为悬空处理,外部不得接入电源,,避免损坏编程器。
对于RST 复位引脚,应确保在目标板上没有看门狗等复位芯片,否则将造成芯片复位的不正常,引起复位引脚,应确保在目标板上没有看门狗等复位芯片,否则将造成芯片复位的不正常,引起烧烧写失败。
特别注意:LSD-PRGS430-IIIA 多功能离线编程器JTAG 口的2脚,输出的电压为一可调电压DC(1.8V-3.6V),用户的目标板或适配器一般推荐不外加电源,以免损坏编程器。
若使用外加电源,则需要将编程器的VCC 输出关闭。
具体设置可参考第三部分。
引脚1234567891011121314定义TDO VCC TDI VCC_IN TMS NC TCK TST GND NC RST NC TXD*RX D*引脚12345678910定义TXD TCKRXD RST GND VCC TEST VCC_IN NC NC 引脚1234567891011121314定义SBWTDI0VCC NC NC NC NC NC SBWTCK GND NC NC NC NCNC 第三部分:第三部分:指示灯与按键说明指示灯与按键说明指示灯与按键说明::LSD-PRGS430-IIIA 多功能离线编程器有3个指示灯和一个按键:分别为电源指示灯、功能指示灯、状态指示灯与开始按键。
本文给出IAR因版本不兼容打不开IAR工作区遇到的各种问题及解决方法,包括依据提示修改版本,删除未知名称(ewp文件)。
若还没解决,则创建新工作区、工程,并拷贝相关文件,我想这是一种通用化的解决方法(很诡异)。
PS:本文以IAR工程项目ContikiCC2530Port为例,IAR for MCS-51版本是7.51A。
本文记录了整个调试过程,实际场景,不妨先跳到第三部分,看行不行,不行的话,再按第二部分修改。
一、IAR错误提示昨天,在GitHub下载了一个IAR工程项目ContikiCC2530Port,打开*.eww文件出现一系列错误,如下:1.1 Broken options were detected in the project file.A backup copy will be made.图1 IAR警告Broken options1.2 The project file * was created by a newer version of project and cannot be opened图2 IAR警告created by a newer version1.3 The project * could not be open图3 IAR警告could not be openBuild区域显示如下信息:LOAD: Configuration 'ContikiBankedRelease' in the project 'ContikiCC253xProj' contains broken options for tool 'General': The format of this file is not supported by this version of the workbench.It appears to have been written by a newer version of the workbench. Diagnostics: 'Settings 'General': unsupported version - '.Options for 'General' will be set to default. Creating backup of original project file.LOAD: Configuration 'ContikiBankedRelease' in the project 'ContikiCC253xProj' contains broken options for tool 'ICC8051': (Registry: unknown name: CompilerMisraRules04)Options for 'ICC8051' will be set to default.LOAD: Configuration 'ContikiBankedRelease' in the project 'ContikiCC253xProj' contains broken options for tool 'XLINK': The format of this file is not supported by this version of the workbench. It appears to have been written by a newer version of the workbench.Diagnostics: 'Settings 'XLINK': unsupported version - '.Options for 'XLINK' will be set to default.如下图所示:图4 IAR log windows信息初步断定,这些警告是因为IAR版本不兼容引起的,但事实上没那么简单,之前也遇见用新版本IAR打开旧版本IAR工程文件,可以直接打开(给出提示信息),在这里还涉及到工程项目配置。
/******************************************************************** * * Standard register and bit definitions for the Texas Instruments * MSP430 microcontroller. * * This file supports assembler and C development for * MSP430x14x devices. * * Texas Instruments, Version 2.3 * * Rev. 1.2, Additional Timer B bit definitions. * Renamed XTOFF to XT2OFF. * * Rev. 1.3, Removed leading 0 to aviod interpretation as octal * values under C * Included rather than "In430.h" * * Rev. 1.4, Corrected LPMx_EXIT to reference new intrinsic _BIC_SR_IRQ * Changed TAIV and TBIV to be read-only * * Rev. 1.5, Enclose all #define statements with parentheses * * Rev. 1.6, Defined vectors for USART (in addition to UART) * * Rev. 1.7, Added USART special function labels (UxME, UxIE, UxIFG) * * Rev. 2.1, Alignment of defintions in Users Guide and of version numbers * * Rev. 2.2, Fixed type in ADC12 bit definitions (replaced ADC10 with ADC12) * * Rev. 2.3, Removed unused def of TASSEL2 / TBSSEL2 * ********************************************************************/
#ifndef __msp430x14x #define __msp430x14x
#ifdef __IAR_SYSTEMS_ICC__ #ifndef _SYSTEM_BUILD #pragma system_include #endif #endif
#if (((__TID__ >> 8) & 0x7F) != 0x2b) /* 0x2b = 43 dec */ #error MSP430X44X.H file for use with ICC430/A430 only #endif
#ifdef __IAR_SYSTEMS_ICC__ #include #pragma language=extended
#define DEFC(name, address) __no_init volatile unsigned char name @ address; #define DEFW(name, address) __no_init volatile unsigned short name @ address;
#endif /* __IAR_SYSTEMS_ICC__ */
#ifdef __IAR_SYSTEMS_ASM__ #define DEFC(name, address) sfrb name = address; #define DEFW(name, address) sfrw name = address;
#endif /* __IAR_SYSTEMS_ASM__*/ #ifdef __cplusplus #define READ_ONLY #else #define READ_ONLY const #endif
/************************************************************ * 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) //进入低功耗模式0之后,CPU被关闭,MCLK关闭 #define LPM1_bits (SCG0+CPUOFF) //进入低功耗模式1之后,CPU被关闭,MCLK关闭,直流发生器被禁止 #define LPM2_bits (SCG1+CPUOFF) //进入低功耗模式2之后,CPU被关闭,MCLK关闭,SCLK被禁止 #define LPM3_bits (SCG1+SCG0+CPUOFF) //进入低功耗模式3之后,CPU被关闭,MCLK关闭,直流发生器被禁止,SCLK也被禁止 #define LPM4_bits (SCG1+SCG0+OSCOFF+CPUOFF) //进入低功耗模式4之后,CPU被关闭,MCLK关闭,直流发生器被禁止,SCLK也被禁止,LFXT也被禁止
#include #define LPM0 _BIS_SR(LPM0_bits) /* Enter Low Power Mode 0 */ #define LPM0_EXIT _BIC_SR_IRQ(LPM0_bits) /* Exit Low Power Mode 0 */ #define LPM1 _BIS_SR(LPM1_bits) /* Enter Low Power Mode 1 */ #define LPM1_EXIT _BIC_SR_IRQ(LPM1_bits) /* Exit Low Power Mode 1 */ #define LPM2 _BIS_SR(LPM2_bits) /* Enter Low Power Mode 2 */ #define LPM2_EXIT _BIC_SR_IRQ(LPM2_bits) /* Exit Low Power Mode 2 */ #define LPM3 _BIS_SR(LPM3_bits) /* Enter Low Power Mode 3 */ #define LPM3_EXIT _BIC_SR_IRQ(LPM3_bits) /* Exit Low Power Mode 3 */ #define LPM4 _BIS_SR(LPM4_bits) /* Enter Low Power Mode 4 */ #define LPM4_EXIT _BIC_SR_IRQ(LPM4_bits) /* Exit Low Power Mode 4 */ #endif /* End #defines for C */
/************************************************************ * PERIPHERAL FILE MAP ************************************************************/
/************************************************************ * SPECIAL FUNCTION REGISTER ADDRESSES + CONTROL BITS ************************************************************/
#define IE1_ (0x0000) /* Interrupt Enable 1 */ DEFC( IE1 , IE1_) #define U0IE IE1 /* UART0 Interrupt Enable Register */ #define WDTIE (0x01) #define OFIE (0x02) #define NMIIE (0x10) #define ACCVIE (0x20) #define URXIE0 (0x40) #define UTXIE0 (0x80)