MSP430单片机硬件结构及原理_第1页
MSP430单片机硬件结构及原理_第2页
MSP430单片机硬件结构及原理_第3页
MSP430单片机硬件结构及原理_第4页
MSP430单片机硬件结构及原理_第5页
已阅读5页,还剩97页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1第3章MSP430单片机硬件结构及原理2本章内容3.1MSP430x14x结构概述3.2MSP430x14x的主要特性和外部引脚3.3MSP430单片机的中央处理器3.4MSP430单片机的存储器结构3.5MSP430时钟模块与低功耗结构3.6系统复位和初始化3.7中断系统33.1MSP430x14x结构概述4硬件结构具有以下特点:超低功耗结构,能够延长电池生存周期。RAM保持方式下电流为0.1μA,等待方式时电流为0.8μA,活动状态时电流也仅为250μA/MIPS。高性能的模拟器件可以用于精确测量。集成12位200Kbps的A/D转换器,自带采样保持。16位RISC中央处理器,125ns指令周期。可以用较少的代码空间实现高性能的应用。在系统可编程的FLASH,为开发编程提供便利。5MSP430x14x主要包括以下功能部件:

CPU存储器:外围模块:主要包括:时钟模块、看门狗、定时器A、定时器B、比较器A、串口0、串口1、硬件乘法器、12位模数转换和端口等。6MSP430X11X系列

7MSP430X12X系列

8MSP430X13X系列

9MSP430X14X系列

10MSP430F15X/F16(1)X系列

11MSP430F15X/F16(1)X系列12MSP430X41X系列

13MSP430F43X系列

14MSP430F44X系列

153.3MSP430单片机的中央处理器

1617MSP430CPU的主要特征RISC指令集,27条内核指令和7种寻址模式寄存器资源丰富寄存器操作为单周期16位地址总线常数发生器直接的存储器到存储器访问位、字和字节操作方式18MSP430CPU的寄存器简写功能R0程序计数器PC,指示下一条将要执行的指令地址。R1堆栈指针SP,指向堆栈栈顶R2状态寄存器SR/常数发生器CG1R3常数发生器CG2R4通用寄存器…………R15通用寄存器19(1)程序计数器PC/R0程序计数器是MSP430CPU中最核心的寄存器,指示出下一条即将执行的指令的地址。程序计数器PC的内容总是偶数,指向偶字节地址.程序计数器PC可以像其他寄存器一样用所有指令和所有寻址方式访问,但对程序存储器的访问必须以字为单位,否则会清除高位字节。程序计数器PC的变化的轨迹决定程序的流程.程序计数器PC的宽度决定了存储器可以直接寻址的范围。MSP430的程序计数器是16位的计数器,,最多直接寻址的存储空间高达64KB。20举例:MOV#LABLE,PC;跳转到地址LABLE开始执行MOVLABLE,PC;程序开始执行的地址为LABLE所在内存中的数MOV@R14,PC;程序开始执行的地址为寄存器R14中的数21(2)堆栈指针SP系统堆栈在系统调用子程序或进入中断服务程序时,能够保护程序计数器PC.然后将子程序的入口地址或者中断矢量地址送程序计数器,执行子程序或中断服务程序。子程序或者中断服务程序执行完毕,遇到返回指令时,将堆栈的内容送到程序计数器中,程序流程又返回到原来的地方,继续执行.此外,堆栈可以在函数调用期间保存寄存器变量、局域变量和参数等。22堆栈指针SP总是指向堆栈的顶部。系统在将数据压入堆栈时,总是先将堆栈指针SP的值减2,然后再将数据送到SP所指的RAM单元。将数据从堆栈中弹出正好与压入过程相反;先将数据从SP所指示的内存单元取出,再将SP值加2。23举例:MOV2(SP),R6;将内存单元I2中的数放到R6中MOVR7,0(SP);将R7中的数放到栈顶所在单元(I3)中PUSH#0123h;将SP的值减2,再将#0123h放到SP所指向的单元中。POPR8;将SP所指向单元中的数(#0123h)放到R8中,再将SP的值加224(3)状态寄存器SR0C进位标志。当运算结果产生进位时置位,否则复位。1Z零标志。当运算结果为零时Z置位,否则Z复位。2N负标志。当运算结果为负时N置位,否则N复位。3GIE中断控制位。控制可屏蔽中断,当GIE置位CPU可响应可屏蔽中断,否则不响应可屏蔽中断。4CPUOff置位CPUOff位可使CPU进入关闭模式,可用所有允许的中断将CPU唤醒。C-Carrybit;Z-Zerobit;N-Negativebit;GIE-GeneralInterruptEnable255OscOff置位OscOff位可使晶体振荡器处于停止状态,同时CPUOff也需置位。可用外部中断或者NMI唤醒。6SCG0SCG0置位关闭SMCLK,与SCG1一起控制系统时钟发生器的4种状态。7SCG1SCG1置位关闭DCO发生器,与SCG0一起控制系统时钟发生器的4种状态。8V溢出标志。当运算结果超出有符号数范围时置位。溢出情况如下:正数+正数=负数负数+负数=正数正数-负数=负数负数-正数=正数9~15保留未用。OscOff-OscillatorOff;SCG0-SystemClockGenerator;V-Overflowbit26(4)常数发生器CG1和CG2寄存器As常数说明R200---------寄存器模式R201(0)绝对寻址模式R21000004H+4位处理R21100008H+8位处理R30000000H0字处理R30100001H+1R31000002H+2位处理R3110FFFFH-1位处理27举例:单操作数指令CLRdst;将dst单元清零这不是内核指令,而是一条模拟指令,汇编器将As=00,R3=0,用MOVR3,dst来模拟。28(5)通用工作寄存器R4~R15举例:MOV#1234H,R15;执行后R15内容为1234HMOV.B#23H,R15;执行后R15内容为0023HADD.B#34H,R15;执行后R15内容为0057H293.4MSP430单片机的存储器结构

MSP430系列的存储空间采用“冯-诺依曼”结构,物理上完全分离的存储区域如ROM/FLASH、RAM、外围模块、特殊功能寄存器SFR等,被安排在同一地址空间,这样就可以使用一组地址、数据总线、相同的指令对它们进行字节或字形式访问。MSP430系列单片机存储器的这种组织方式和CPU采用精简指令相互协调,对外围模块的访问不需要单独的指令,为软件的开发和调试提供便利。303.4.1MSP430存储空间结构MSP430不同系列器件的存储空间分布有很多相同之处:中断向量被安排在相同的空间:0FFE0~0FFFFH;8位、16位外围模块占用相同范围的存储器地址;所有器件的特殊功能寄存器占用相同范围的存储器地址:00H~0FH;数据存储器开始于相同的地址,即从0200H处开始;代码存储器的最高地址都是0FFFFH。31存储空间的分布也存在一些差异:不同型号器件的代码存储器容量不一样;代码存储器的起始地址不一样,每一种器件的代码存储器的起始地址为起始地址=10000H—该器件的代码容量仅FLASH型有信息存储器,而且不同的器件地址也不一样,但容量都是256B仅FLASH型有引导存储器,而且不同器件的地址也不一样,但容量都是1KB各器件数据存储器的末地址也不一样,其末地址为末地址=该器件数据RAM容量+0200H中断向量的具体内容因器件不同而不同;所有器件的8位、16位外围模块地址范围内的具体内容因器件不同而不同。323.4.1数据存储器RAMMSP430的数据存储器位于存储器地址空间的0200H以上,这些存储器一般用做数据的保存与堆栈,同时也是数据运算的场所,特殊场合还可以用作程序存储器。可以字操作也可以字节操作,通过指令后缀加以区别。字节操作可以是奇地址或者是偶地址,在字操作时,每两个字节为一个操作单位,必须对准偶地址。33举例MOV.B#20H,&221H;执行后221H单元的内容为20HMOV.B#324H,&221H;执行后221H单元的内容为24HMOV.W#3234H,&222H;执行后222H单元的内容为34H,223H单元的内容为32HMOV.W#324H,&221H;执行后221H单元的内容为03H,220H单元的内容为24HRAM空间还可以进行运算,如:MOV.B#33H,&220H;执行后地址220H的内容为33HADD.B#22H,&220H;执行后地址220H的内容为55H343.4.2程序存储器ROM程序ROM区为0FFFFH以下一定数量存储空间,可存放指令代码和数据表格。程序代码必须偶地址寻址。程序代码可分为三种情况:中断向量区、用户程序代码及系统引导程序(个别器件有,如FLASH型)。351中断向量区中断源中断标志系统中断地址优先级上电、外部复位、看门狗、FLASH存储器WDTIFG复位0FFFEH15NMI、振荡器故障、FLASH访问出错NMIFG、OFIGF、ACCVIFG非屏蔽/可屏蔽0FFFCH14定时器BBCCIFG0可屏蔽0FFFAH13定时器BBCCIFG1~6,TBIFG可屏蔽0FFF8H12比较器ACMPAIFG可屏蔽0FFF6H11看门狗定时器WDTIFG可屏蔽0FFF4H10串口0接收URXIFG0可屏蔽0FFF2H9串口0发送UTXIFG0可屏蔽0FFF0H8ADCADCIFG可屏蔽0FFEEH7定时器ACCIFG0可屏蔽0FFECH6定时器ACCIFG1~2,TAIFG可屏蔽0FFEAH5P1P1IFG.0~7可屏蔽0FFE8H4串口1接收URXIFG1可屏蔽0FFE6H3串口1发送UTXIFG1可屏蔽0FFE4H2P2P2IFG.0~7可屏蔽0FFE2H1362用户程序区用户程序区一般用来存放程序与常数或表格。MSP430的存储结构尤其允许存放大的数表,并且可以用所有的字和字节指令访问这些表。这一点为提高编程的灵活性和节省程序存储空间带来各种好处。373.4.3外围模块寄存器MSP430系列单片机外围模块的寻址被安排在0010H~01FFH这一区域,都可以用软件访问和控制。MSP430可以象访问普通RAM单元一样对这些寄存器进行操作。这些寄存器也分为字节结构和字结构。地址空间0100H~01FFH安排字结构,地址空间0010H~00FFH安排字节模块,地址空间0000H~000FH保存特殊功能寄存器。38MSP430F149字模块的空间分配地址说明地址说明0H~1FFH保留170H~170H定时器A1E0H~1EFH保留160H~16FH定时器A1D0H~1DFH保留150H~15FHADC12转换0H~1CFH保留140H~14FHADC12转换1B0H~1BFH保留130H~13FH硬件乘法器0H~1AFHADC12控制和中断120H~12FH看门狗、FLASH控制190H~19FH定时器B110H~11FH保留180H~18FH定时器B100H~10FH保留39MSP430F149字节模块的空间分配地址说明地址说明0H~1FFH保留70H~70H串口1/串口00E0H~1EFH保留60H~6FH保留0D0H~1DFH保留50H~5FH比较器A,系统时钟0H~1CFH保留40H~4FH保留0B0H~1BFH保留30H~3FH端口6/端口50H~1AFH保留20H~2FH端口4/端口3090H~19FH保留10H~1FH端口1/端口2080H~18FHADC12存储控制00H~0FHSFR40MSP430F149特殊功能寄存器SFR的空间分配地址说明地址说明0FH无定义/未实现07H无定义/未实现0EH无定义/未实现06H无定义/未实现0DH无定义/未实现05H模块允许2:ME20CH无定义/未实现04H模块允许1:ME10BH无定义/未实现03H中断标志2:IFG20AH无定义/未实现02H中断标志1:IFG109H无定义/未实现01H中断允许2:IE208H无定义/未实现00H中断允许1:IE1413.5MSP430时钟模块与低功耗结构时钟模块对于单片机来说是至关重要的,它不仅给CPU提供正确的时序,还给单片机的外围模块提供工作时序。因此,一个高效稳定的时钟模块是单片机系统能够正常工作的基础。在数字系统中,系统功耗与频率成正比,实际应用中常希望系统能够快速响应事件的同时又要尽量的降低系统能耗,这对于单片机来说是一个互相矛盾的要求。MSP430的系统时钟很好的满足了这个要求,它通过提供几种不同的时钟信号,并为时钟设计多种不同的工作模式,使用户可以根据需要,灵活的为CPU和外设选择合适的时钟频率。423.5.1MSP430系列时钟模块43它有3个时钟源输入端LFXT1CLK低频时钟源,接低频时钟晶体、也可接高频时钟晶体、陶瓷谐振器或直接外接时钟信号源。XT2CLK高频时钟源,接标准高频晶体、也可接陶瓷谐振器或直接外接450kHz~8MHz时钟信号源。DCOCLK片内可以数字控制的RC振荡器。44基础时钟模块可提供3种时钟信号:ACLK辅助时钟,是LFXT1CLK信号经1,2,4,8分频后得到的。分频系数可由软件控制。ACLK可由软件选作各个外围模块的时钟信号,一般用于低速外设。MCLK系统主时钟,由软件选择来自LFXT1CLK、XT2CLK,DCOCLK三者之一,然后经1,2,4,8分频得到,分频系数可由软件控制。主要用于CPU和系统。SMCLK子系统时钟,由软件选择来自LFXT1CLK、XT2CLK,DCOCLK三者之一,然后经1,2,4,8分频得到,分频系数可由软件控制。主要用于高速外围模块。45当发生有效的PUC后,MCLK和SMCLK使用工作在800KHz附近DCOCLK作为时钟源,ACLK使用工作在低速模式的LFXT1CLK作为时钟源。状态寄存器(SR)控制位SCG0、SCG1、OSCOFF和CPUOFF用来配置基础时钟模块的使能。DCOCTL、BCSCTL1和BCSCTL2用来配置基础时钟模块。在程序运行的任何时间,都可以通过这些寄存器来配置基础时钟模块。(PUC-PowerUpClear重启)(POR-PowerOnReset上电复位,更彻底复位)463.5.2低速晶体振荡器MSP430系列的每种产品中都有低速晶体振荡器(LTXT1),通常外接32768Hz的时钟晶体,可以选择使用广泛使用的手表晶振,同时将所需两个小电容也集成在内部。这样可降低系统成本。LFXT1振荡器在发生有效的PUC后开始工作,一次有效的PUC信号将SR寄存器的OscOff位复位,即允许LFXT1工作。如果LFXT1CLK信号没有用作SMCLK或ACLK信号,则可以用软件将OscOff位置以禁止LFXT1工作:MOV#OscOff,SR47LFXT1的控制逻辑如下图所示:48注意:低速时钟通常需要几百ms的时间来启动。尽量避免外界信号对晶体的干扰,布线时晶体要尽量靠近单片机。当工作在低速模式时,如果VCC小于2.5V,为保证正常工作,需要在VSS和XOUT之间加入5.1M欧姆电阻LFXT1振荡器也可以外接频率较高的高速晶体振荡器或陶瓷振荡器,以工作在高速模式;这时XTS位置位,同时两个引脚还要外接电容,电容大小根据晶体或振荡器的特性来选择。493.5.3高速晶体振荡器高速振荡器(XT2)主要存在于F13X,F14X,F4XX等器件,一般称之为第二振荡器XT2,它产生时钟信号XT2CLK,它的工作特性与LFXT1振荡器工作在高频模式时类似。下页图是TX2振荡器的控制逻辑。如果XT2CLK信号没用做MCLK、SMCLK时钟信号,则可以用XT2Off控制位关闭XT2。如果CPUOff=0,SELM=2,则XT2CLK用做MCLK时钟;如果SCG1=0且SELS=1,XT2CLK用做SMCLK时钟。50513.5.4DCO振荡器MSP430系列的两个外部振荡器产生的时钟信号都可以经1,2,4,8分频后用作系统主时钟MCLK。上电复位或振荡器失效时,DCO振荡器会自动被选做MCLK的时钟源,频率在800K左右。DCO振荡器实质上是一个可数字控制的RC振荡器。因为RC振荡器的频率会随着温度和工作电压的变化而变化,所以同一型号芯片产生的频率有所不同。但同时DCO频率可通过DCO、MOD、Rsel等控制位用软件调节,这又增加了振荡器频率的稳定性。当DCO信号没有用作SMCLK和MCLK时钟信号时,可以用软件关闭直流发生器,直流发生器消耗的电流定义了DCOCLK的基本频率。52DCO的控制逻辑如图所示。53MSP430x1xx的DCO控制原理图54最终的DCO输出频率DCOCLK由以下功能建立:①DCO基础频率由内部或外部电阻向DC发生器注入的电流决定,由DCOR控制位选择片内或片外电阻。②基础频率由控制位Rsel2,Rsel1和Rsel0分频为8个标称频率范围,而这些频率范围因不同型号而异。③控制位DCO0,DCO1和DCO2可分段调节DCOCLK频率。④由5个调整位MOD0~MOD4控制切换DCO和DCO+1选择的两种频率。55由DCO控制位选择的DCOCLK频率大约可以在时钟周期的10%范围内调整。在MSP430x1xx系列中DCO的控制由3个寄存器完成:DCOCTL、BCSCTL1、BCSCTL2。(BasicClockSystemControlRegister)56(1)DCOCTL地址为056H,PUC后的值为060HMOD.0~MOD.4定义了在32个DCO周期中插入的f(DCO+1)周期,而在余下的DCO周期中为f(DCO)周期。如果DCO常数为7,由于已经选择了最高频率将不进行调整。DCO.0~DCO.2定义了8种频率之一,而频率由注入直流发生器的电流定义。57(2)BCSTCL1地址为057H,PUC后的值为084H58Rsel.0~Rsel.2三位选择某个内部电阻以决定标称频率。Rsel=0,选择最低的标称频率;……Rsel=7,选择最高的标称频率。XT5V此位必须为0。DIVA.0~DIVA.1选择ACLK的分频系数。DIVA=0,ACLK的分频系数为1;DIVA=1,ACLK的分频系数为2;DIVA=2,ACLK的分频系数为4;DIVA=3,ACLK的分频系数为8。XTS选择LFXT1工作在低频晶振模式还是高频晶振模式,选择须同实际晶体。XTS=0,LFXT1工作在低频模式;XTS=1,LFXT1工作在高频模式。XT2OFF控制XT2振荡器的开启与关闭。XT2OFF=0,XT2振荡器开启;XT2OFF=1,XT2振荡器关闭。5960(3)BCSTCL2地址为058H,PUC后值为00HDCOR选择内部还是外部电阻。DCOR=0,选择内部电阻;DCOR=1,选择外部电阻。DIVS.0~DIVS.1选择SMCLK的分频因子。DIVS=0,分频因子为1;DIVS=1,分频因子为2;DIVS=2,分频因子为4;DIVS=3,分频因子为8。61SELS选择SMCLK的时钟源。SELS=0,SMCLK的时钟源为DCOCLK;SELS=1,SMCLK的时钟源为LFXT1CLK(对于MSP430F11XX), SMCLK的时钟源为XT2CLK(对于MSP430F13X/14X)。DIVM.0~DIVM.1选择MCLK的分频因子。DIVM=0,分频因子为1;DIVM=1,分频因子为2;DIVM=2,分频因子为4;DIVM=3,分频因子为8。SELM.0~SELM.1选择MCLK的时钟源。SELM=0,MCLK的时钟源为DCOCLK;SELM=1,MCLK的时钟源为DCOCLK;SELM=2,MCLK的时钟源为LFXT1CLK(对于MSP430F11XX),MCLK的时钟源为XT2CLK(对MSP430F13X/14X);SELM=3,MCLK的时钟源为LFXT1CLK。62PUC信号之后,DCOCLK被自动选做MCLK时钟信号,根据需要,MCLK的时钟源可以另外设置为LFXT1或者XT2.设置顺序如下:1.复位OscOff;2.清除OFIFG;3.延时等待至少50us;4.再次检查OFIFG,如果仍然置位,则重复3,4步骤,直到OFIFG=0为止。63举例:;SelectLFXT1(HFmode)forMCLKBIC#OscOff,SRBIS.B#XTS,BCSSTL1L1BIC.B#OFIFG,&IFG1MOV#0FFH,R15L2DECR15JNZL2BIT.B#OFIFG,&IFGJNZL1BIS.B#SELM1+SELM0,&BCSCTL264MSP430x14x与时钟模块有关的几个引脚引脚名称引脚序号第二功能P1.4/SMCLK12SMCLK信号输出P2.0/ACLK20ACLK信号输出P5.4/MCLK48MCLK信号输出P5.5/SMCLK49SMCLK信号输出P5.6/ACLK50ACLK信号输出XIN8晶体振荡器XT1的输入口XOUT/TCLK9晶体振荡器XT1的输出口或测试时钟输入口XT2IN53晶体振荡器XT2的输入口XT2OUT52晶体振荡器XT2的输出口P2.5/Rosc25外界一电阻以确定DCO的工作频率653.5.5振荡器失效检测MSP430单片机由模拟电路监视LFXT1CLK(工作于高频模式)和XT2CLK。当其失效大约50μs时被认定为振荡器失效。当振荡器失效信号被检测到,如果MCLK源为高速模式下的LFXT1或XT2,则MCLK源自动切换到DCO。由于DCO被选为MCLK,所以代码会继续执行。振荡器失效会设置振荡器失效标志位OFIFG,如果此时振荡器失效中断允许位(OFIE)置位,则产生非屏蔽中断请求。OFIFG必须由用户软件清除。6667XT2振荡器的失效信号和LFXT1振荡器的失效信号都能引起OFIFG中断标志。对于只有2个振荡器的芯片(MSP430x11x、MSP430x11x1),振荡器失效标志OFIFG可以在LFXT1的失效信号为“0”时用软件复位。对于有3个振荡器的芯片(MSP430x13x、MSP430x14x),振荡器失效标志OFIFG必须在LFXT1和XT2的失效信号都为“0”时才能被软件复位。当系统上电、,LFXT1在高速模式时失效或XT2失效时,振荡器失效信号XT_OscFault有效,OFIFG被置位。当XT2或高速模式的LFXT1被软件停止,XT_OscFault立即有效,并一直保持到振荡器重起之后约50μs。68如果MCLK信号来自高速模式的LFXT1或XT2,则当XT振荡器失效时DCO振荡器会自动被选作MCLK的源。由于DCO振荡器被选作MCLK,XT振荡器失效而引起的NMI中断请求也可以得到响应。这个NMI中断的请求甚至在CPU被关闭的情况下也能被处理。6970选DCO为MCLKSELM.1=0NMI中断处理,由硬件复位:OFIE,NMIE,ACCIEOFIFG=1ACCIFG=1NMIIFG=1复位ACCVIFG复位NMIIFG用户软件振荡器失效处理用户软件FLASH访问出错处理用户软件外部NMI处理OFIFG=0OFIFG=1重新选择失效的XT振荡器RETINONONOYesYesYes灯闪烁#include<msp430x14x.h>voidmain(void){WDTCTL=WDTPW+WDTHOLD;//StopwatchdogtimerP3DIR|=BIT2;//SetP3.2tooutputdirectionfor(;;){volatileunsignedinti;P3OUT^=BIT2;//ToggleP3.2usingexclusive-ORi=50000;//Delaydo(i--);while(i!=0);}}3.5.6基础时钟模块应用举例例1设MCLK=XT2,SMCLK=DCOCLK,将MCLK由5.4输出程序如下:#include<msp430x14x.h>voidmain(void){unsignedinti;WDTCTL=WDTPW+WDTHOLD;//停止看门狗P5DIR|=0X10;//设置P5.4为输出P5SEL|=0X10;//设置P5.4为MCLK输出BCSCTL1&=~XT2OFF;//设置XT2为有效do{IFG1&=~OFIFG;//清除振荡器失效标志for(i=0xFF;i>0;i--);//稳定时间}while((IFG1&OFIFG)!=0);//如果振荡器失效标志存在则继续循环。BCSCTL2|=SELM1;//设置MCLK=XT2for(;;);}72例2设置ACLK=MCLK=LFXT1=LF,将MCLK通过P5.4输出。#include<msp430x14x.h>voidmain(void){unsignedinti;WDTCTL=WDTPW+WDTHOLD;//停止看门狗

//P5DIR|=0X10;//设置P5.4为输出P5SEL|=0X10;//设置P5.4为MCLK输出BCSCTL1&=~XTS;//设置LFXT1为低速模式do{IFG1&=~OFIFG;//清除振荡器失效标志for(i=0xFF;i>0;i--);//稳定时间}while((IFG1&OFIFG)!=0);//如果振荡器失效标志存在则继续循环BCSCTL2|=SELM1+SELM0;//设置MCLK=LFXT1for(;;);}733.5.7低功耗结构74MSP430系列单片机是通过CPU中状态寄存器SR中的SCG1、SCG2、OscOff和CPUOff四个位来实现工作模式控制的。各控制位作用如下:7515~9876543210保留SCG1SCG0OscOffCPUOffSCG1:当SCG1复位时,使能SMCLK;SCG1置位则禁止SMCLK。SCG0:当SCG0复位时,直流发生器被激活,只有在SCG0置位且DCOCLK信号没有用于MCLK或SMCLK,直流发生器才能被禁止。OscOff:当OscOff复位时,LFXT晶体振荡器激活,只有当OscOff被置位且不用于MCLK或SMCLK时,LFXT晶体振荡器才能被禁止,当使用振荡器关闭选项OscOff时,需要考虑晶体振荡器的启动设置时间。CPUOff:当CPUOff复位,用于CPU的时钟信号MCLK被激活,当CPU置位时,MCLK停止。76只要任意中断被响应,上述控制位就被压入堆栈保存,中断处理之后,又可以恢复以前的工作方式。在中断处理子程序执行期间,通过间接访问堆栈数据,可以操作这些位,这样在中断返回后,MSP430单片机会以另外一种功耗方式继续运行。7778下表是各种低功耗工作模式的控制位一览表。工作模式SCG1SCG0OSCOffCPUOffLPM00001LPM10101LPM21001LPM31101LPM41111MSP430系列单片机各个模块运行是完全独立的,定时器、输入\输出端口、A/D转换、看门狗、液晶显示器等都可以在主CPU休眠的状态下独立运行。当需要主CPU工作时,任何一个模块都可以通过中断唤醒CPU,从而使系统已最低功耗运行。为了充分利用CPU低功耗性能,可以让CPU工作于突发状态。在通常情况下,根据需要使用软件将CPU设定到某一低功耗工作模式下,在需要时使用中断将CPU从休眠状态中唤醒,完成工作之后又可以进入相应的休眠状态。#include<msp430x14x.h>voidmain(void){BCSCTL1|=DIVA_2;//ACLK/4WDTCTL=WDT_ADLY_1000;//WDT1s/4intervaltimerIE1|=WDTIE;//EnableWDTinterruptP3DIR|=BIT1;//SetP3.1tooutputdirectionP3OUT&=~BIT1;//SetP3.1to0while(1){inti;_BIS_SR(LPM3_bits+GIE);//EnterLPM3P3OUT|=BIT1;//SetP3.1LEDonfor(i=5000;i>0;i--);//DelayP3OUT&=~BIT1;//ClearP3.1LEDoff}}#pragmavector=WDT_VECTOR__interruptvoidwatchdog_timer(void){_BIC_SR_IRQ(LPM3_bits)//ClearLPM3bitsfrom0(SR)}当电流消耗是系统应用的重要指标时,应考虑以下的一些基本的设计原则:最大化LPM3的时间,用32KHz晶振作为ACLK时钟,DCO用于CPU激活后的突发短暂运行。用接口模块代替软件驱动功能。用中断控制程序运行。用可计算的分支代替标志位测试产生的分支。用快速查表代替软件的软件计算。在冗长的软件计算中使用单周期的CPU寄存器。避免频繁的子程序和函数调用。尽可能直接用电池供电不论对于内核还是对于外围模块,选择尽可能低的运行频率,如果不影响功能应设计自动关机。3.6系统复位和初始化85POR来自于硬件复位,只有以下两种情况才能产生POR信号(1)芯片上电;(2)RST/NMI设置成复位模式,在RST/NMI引脚上出现低电平信号。POR信号的产生总会产生PUC信号,但PUC信号的发生不一定会产生POR信号。PUC信号是上电清除信号,产生它的事件为:(1)发生POR信号;(2)处于看门狗模式下,看门狗定时时间到;(3)看门狗定时器写入错误的安全键值;(4)FLASH存储器写入错误的安全键值。863.6.1系统上电复位当Vcc上电比较慢的时候,POR检测器保持POR信号为高电平直到Vcc已经上升到大于启动门限,如图所示。当Vcc快速上升时,POR信号产生一个延迟再产生POR信号以便让MSP430正确初始化。873.6.2系统复位后器件的初始状态(1)引脚被配置成复位模式;(2)I/O引脚被切换成输入模式;(3)其他的模块和寄存器被初始化成默认状态,如数据手册所述;(4)状态寄存器复位;(5)看门狗定时器以看门狗模式激活;(6)PC装入0FFFEH处的地址值,CPU从这一地址开始执行。88软件初始化,用户软件必须根据应用的需求对MSP430进行初始化,必须包括以下几个部分:(1)初始化SP,通常是RAM的顶部;(2)初始化看门狗定时器;(3)配置外围模块。893.7中断系统有三种中断:(1)系统复位(2)NMI中断(3)可屏蔽中断9091中断优先级顺序排列图(参考P51表)3.7.1不可屏蔽中断NMINMI中断的使能位不是由通用中断使能GIE来控制,而是由特殊的标志位来控制(NMIIE,ACCVIE,OFIE),当一个NMI中断发生,所有的NMI中断使能都自动复位。程序从储存在NMI中断向量(0FFFCH)开始执行,用户软件必须在NMI中断中对允许的NMI中断重新使能。NMI中断可以由以下三种

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论