第六讲 Msp430单片机的复位中断和低功耗
- 格式:pdf
- 大小:1.58 MB
- 文档页数:41
一张图理解msp430f4371的低功耗模式430有6中工作模式,在此不再累述,C程序中,使430单片机低功耗进入低功耗的语句非常简单,只需一句LPM0/LPM1/LPM2/LPM3/LPM4即可使其进入低功耗状态。
看了一天430的系统时钟模块和低功耗状态,发现最靠谱的东西还是官网数据手则,迷惑了一天,最终一张图片使思维稍微清晰。
图片如下:从上图得到自己的理解,虽然可能有误,但暂时不影响对430单片机的使用:LPM0:CPUoff置位------------------------>;CPU不能用,MCLK不能用,其他一切照旧活动;LPM1:CPUoff置位,SGC0置位----------->;CPU不能用,MCLK不能用,FLL+停止操作,而ACLK和SMCLK正常活动;LPM2:CPUoff置位,SCG1置位----------->;CPU不能用,MCLK、FLL+、DCOCLK不能用,但直流发生器、ACLK正常工作;LPM3:CPUoff置位,SCG1置位,SCG0置位---->;CPU不能用,MCLK,FLL+,DCOCLK,直流发生器不能用,但ACLK不能用;LPM4:CPUoff置位,SCG1置位,SCG0置位,OSCoff置位----->;LPM3的基础上使ACLK也不能用。
作者认为自己理解有误的地方,就是SCG1的控制范围,即其到底是控制直流发生器还是调制器还是控制FLL+的,由于找不到相关资料,只有勉强做如下理解:SCG1置位的时候,调制器不能工作,自然DCOCLK不能用了,同时FLL+也不能工作,但直流发生器是工作的,只有当SCG1和SCG0同时置位的时候直流发生器才停止工作,这个时候甭管FLL+还是DCOCLK都不能工作了,有可能SCG0对直流发生器也有部分控制作用,但不像对FLL+那样完全控制。
以上理解可能有误,但希望真正懂得高手路过此帖的时候请给予指正,在此谢过。
系统复位、中断及工作模式-利尔达MSP430培训资料系统复位、中断及工作模式嵌入式研发中心复位电路的结构POR(Power-on reset)的产生:上电 RST出现低电平 SVS产生复位动作 PUC(Power-up clear)的产生: POR信号 WDT时间溢出看门狗密钥错误 FLASH操作密钥错误 BOR(Brownout Reset)的产生: BOR 模块产生 PUC BOR PORBOR时序POR和BORBOR: MCLK< 4Mhz Brown-out!系统复位后的状态RSR/NMI为复位状态 IO口为输入状态各模块和寄存器恢复为初始化的状态状态寄存器SR复位看门狗WDT为看门狗状态 FFFE的内容装入PC指针软件必须完成的工作初始化堆栈指针SP,一般为RAM的顶端根据应用的需要,初始化WDT 对模块初始化特别注意:看门狗、晶振失败、FLASH写入失败都可以引起 RESET复位电路的设计1. RESET脚直接通过电阻上拉----不建议采用此方式2. RESET脚采用RC复位电路3. RESET脚采用电压监控芯片适用于MSP430没有BOR电路的芯片可以确保用户控制器中满足所有的工作电压条件MCU才启动4. MSP430F20xx的RESET与SBW共用,电容不要过大Device Pins Flash/RA Timers Communicatio BOR Features M n F11x1 20 4k/256 A3 Comp_A 8k/256 A3 ADC10 F11x2 20 F12x 28 8k/256 A3 Comp_A USART F12x2 28 8k/256 A3 USART ADC10 F13x 64 16k/512 A3,B3 USART ADC12 F14x 64 60k/2k A3,B7(2)USART ADC12, MPY 64 32k/1k A3,B3 USART, I2C ADC12, (2)DAC12, (3)DMA F15x F16x 64 60k/10k A3,B7 (2)USART, ADC12, (2)DAC12, (3)DMA I2C All devices include watchdog timer (WDT) and basic clock system (BCS)MSP430中断种类系统复位 POR、PUC、BOR和SVS 非屏蔽中断NMI 晶振失败 FLASH失败可屏蔽中断 TA、BT、COMP、UART等中断矢量结构中断进入进入中断需要6个指令周期1. 当前运行的指令完成,PC指向下一条指令 2. PC压栈 3. SR压栈 4. 选择高优先级中断 5. 单元中断中断标志清除,多元中断需要软件清除 6. 除SCG0外,SR被清除,如果是低功耗,退出低功耗,GIE的清除关闭可屏蔽中断7.装载PC指针中断前中断后特别注意:进入中断后,SP指针指向堆栈中的SR. 可以在中断程序中修改0(SP)内容改变中断返回后 SR状态。
MSP430MSP430一、上电复位POR 和上电清除PUC二、低功耗控制但系统时钟发生器基本功能建立之后,CPU内的状态寄存器SR中的SCG1、SCG2、OscOff、CpuOff是低功耗的重要控制位;系统工作模式一共有6种,1种活动模式和5种低功耗模式;可以通过设置控制位使MSP430进入低功耗模式,由中断唤醒CPU,在执行完中断服务程序之后再回到低功耗模式,也可以在执行中断程序的时候间接访问堆栈修改状态寄存器的值,这样中断程序执行完之后就会进入另外一种低功耗模式或者处于活动模式。
三、时钟模块(一)、MSP430F149有三个时钟输入源:1、LFXT1CLK:如果LFXTCLK没有作用于SMCLK、MCLK信号,可以用OscOff置位以禁止LFXT1CLK工作;2、XT2CLK:若XT2CLK没有作用于SMCLK、MCLK信号,可以用控制位XT2OFF 关闭XT2;3、DCO振荡器:MSP430F149的两个外部振荡器产生的时钟信号都可以经过1、2、4、8分频后用作系统主时钟MCLK;当外部振荡器失效后,DCO 振荡器会自动被选作MCLK 的时钟源;(二)、MSP430F149提供3三种时钟信号:1、ACLK----辅助时钟,一般用于低速外设,由LFXT1CLK信号分频而得;2、MCLK----系统通过主时钟,一般用于CPU和系统,由以上三个时钟源任意一个分频而得;3、SMCLK---主要用于高速外设,由XT2CLK+XT2CLK 或LFXT1CLK+DCO分频而得。
(三)、如何控制MSP430的DCOCLK频率?——时钟模块的控制由5个寄存器来完成1、DCOCTL:定义8总频率之一2、BCSCTL1:控制XT2CLK的开启与关闭;控制LFXT1CLK的工作模式(低频或高频,高频下需要接高频时钟源);控制ACLK分频。
3、BCSCTL2选择MCLK时钟源;选择MCLK分频;选择SMCLK时钟源;选择SMCLK时钟源分频。
MSP430低功耗对于嵌入式处理器系统来说,低功耗设计有3个基本原则:工作频率和功耗成反比关系。
工作电压和功耗成正比关系。
工作模块数量和功耗成正比关系。
MSP430系列MCU具有强大的低功耗模式设计。
在不同的低功耗模式下,配置不同的时钟信号来降低CPU及工作模块的工作频率;选择性的关闭暂时不使用模块和相关的时钟信号来降低工作模块的数量以达到降低整机功耗的目的。
MSP430的5xx系列和6xx还支持用户设置内核电压,通过降低内核工作电压来降低功耗。
低功耗模式是MSP430的特色功能,一般情况下,MSP430分为6种工作状态,分别是活动状态(AM)、低功耗模式0(LPM0)、低功耗模式1(LPM1)、低功耗模式2(LPM2)、低功耗模式3(LPM3)和低功耗模式4(LPM4)。
对于5xx系列的产品带实时时钟RTC的信号还具备低功耗模式3.5(LPM3.5)和低功耗模式4.5(LPM4.5)。
根据不同的应用合理地选用低功耗模式可以有效地降低MSP430功耗。
图3-8是MSP430F21x1工作在1MHz对应于AM模式和低功耗模式下的电流消耗。
从图中可以看到低功耗模式下,电流消耗要远小于AM模式。
下面对各种工作模式做详细的介绍。
MSP430的低功耗模式是通过状态寄存器SR各位的配置来完成的,SR寄存器如表3-6所示。
与低功耗模式相关的是系统时钟控制位(SCG0)和(SCG1)、振荡器关闭/开启位(OSCOFF)和CPU关闭/开启位(CPUOFF)。
SCG0位用于关闭DCO的直流发生器,也就是关闭DCOCLK;SCG1位用于关闭SMCLK;OSCOFF位用于关闭MSP430的振荡器,包括LFXT1和XT2;CPUOFF位用于关闭CPU。
表3-6 SR寄存器Bit15 Bit14 Bit13 Bit12 Bit11 Bit10 Bit9 Bit8Reserved VBit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0SCG1 SCG0 OSCOFF CPUOFF GIE N Z C5种低功耗模式可以使用表3-7区分,表中显示了5种低功耗模式下,CPU)、SMCLK、ACLK和DCO振荡器的关断状MSP430的时钟信号MCLK(态。
单片机MSP430的极低功耗系统设计<P <B 关键词:极低功耗系统MSP430 低功耗管理<P <B 1 影响系统功耗的主要因素对于一个数字系统而言,其功耗大致满足以下公式:P=CV2f,其中C为系统的负载电容,V为电源电压,f为系统工作频率。
由此可见,功耗与电源电压的平方成正比,因此电源电压对系统的功耗影响最大,其次是工作频率,再就是负载电容。
负载电容对设计人员而言,一般是不可控的,因此设计一个低功耗系统,应该考虑到不影响系统性能前提下,尽可能地降低电源的电压和使用低频率的时钟。
下面对TI公司新出MSP430来具体探讨这个问题。
2 基于MSP430极低功耗系统的设计MSP430具有工业级16位RISC,其I/O和CPU可以运行在不的时钟下。
CPU功耗可以通过开关状态寄存器的控制位来控制:正常运行时电流160μA,备用时为0.1μA,功耗低,为设计低功耗系统提供了有利的条件。
图1是我们设计的以MSP430为CPU的“精密温度测试仪”(下面简称测试仪)。
该产品使用电池供电,体积小巧,携带方便。
(1)电源电压在使用时应该尽可能地选择最低的电源电压。
对于MSP430而言,可用的最低电压是很低的,最低可达1.8V。
我们使用TI公司推荐使用的3V。
通常的电源只提供5V 电压,因此,需要将5V电压由一个3V的稳压管降压后给CPU供电,也可以直接锂电池供电。
3V不是标准的TTL电平,因此,在使用时需要用接口电路使CPU的非TTL标准电平能与TTL标准电平的器件连接。
这些接口电路应该也是低功耗的,否则会造成一方面使用低电压降低了功耗,另一个方面使用额外的接口电路又增加了系统的功耗。
或者直接使用支持3V电压的外围芯片。
(2)时钟频率从低功耗的角度看,需要较低的频率,但是在实时应用中为了快速响应外部事件又需要有比较快的系统时钟。
这就需要系统具有两个高低不同的频率,在需要的时候可以在两个频率之间进行切换。
MSP430低功耗模式:工作频率越低,工作电压越低,工作模块越少MCU功耗越少MCLK:系统主时钟一般为8MHz,供CPU和系统使用;SMCLK:子系统时钟32—768KHz,供外围模块使用;ACLK:辅助子时钟,由LFXT1CLK产生,提供外围模块使用DCO:整合的高速数控振荡器,用于CPU和高速外围设备的主时钟源状态寄存器SR的低功耗控制位:SCG1:系统时钟发生器控制位1(System clock generator 1)置1时关闭SMCLKSCG0:系统时钟发生器控制位0(System clock generator 0)置1时关闭DC发生器OSCOff:晶振控制位(Oscillator Off Bit)置1时关闭LFXT1振荡器CPUOff:CPU控制位(CPU Off Bit)置1时关闭MCLK,此时除了RAM内容、端口、寄存器保持外,CPU处于停止状态,由中断将CPU从此状态唤醒。
1.MSP430内部各模块运行是完全独立的:TA、TB、I/O端口、A/D、WDT等均可在CPU休眠的状态下独立运行,各个片内模块也可通过禁止相应寄存器中的控制位关闭。
2.只要改变了SR中的模式控制位,工作模式也立即改变;有关的模块也因为相应的时钟源禁止而被关闭。
3.改变模式不影响所有的I/O引脚及RAM/寄存器的值。
低功耗模式的进入与退出:在AM模式下。
按低功耗模式设定SR中的控制位,MSP430就进入设定的低功耗模式。
任意中断均可以唤醒处于低功耗模式的MSP430,即切换到AM活动模式。
低功耗退出过程:当处于低功耗模式下的MSP430,有N类型号的非屏蔽或可屏蔽中断源产生,满足响应条件,CPU由硬件完成下面的操作:1.入栈保护当前PC2.入栈保护当前SR3.清零SR(置GIE=0,屏蔽可屏蔽中断,并结束低功耗模式,切换到活动模式)4.从中断向量表取中断向量至PC5.转去执行中断服务程序同样的,中断程序执行完毕,执行到RETI返回指令时:1.出栈恢复SR和PC的值2.因为回复了SR的值,使MSP430回到原来的低功耗模式!如果希望改变MSP430返回的低功耗模式时,需要在中断响应程序中修改堆栈中的SR控制位的值,使MSP430进入活动模式或其它低功耗模式进入低功耗模式:汇编语言:BIS.W #LPMn,SRC语言:_BIS_SR(LPMn_bits); 或者LPMn。
MSP430微控制器低功耗设计方法分析随着物联网和嵌入式系统的快速发展,对微控制器低功耗设计方法的需求越来越迫切。
MSP430微控制器作为一种低功耗微控制器,具有出色的性能和低功耗特性,逐渐被广泛应用于各种电池供电的设备中。
本文将以MSP430微控制器为例,深入探讨其低功耗设计方法。
在设计MSP430微控制器应用时,低功耗是一个重要的考虑因素。
为了最大程度地减少功耗,我们可以采取以下几种方法。
1. 优化算法设计:在编写程序时,我们可以通过优化算法来减少微控制器的工作负载和能耗。
例如,避免使用复杂的循环和浮点运算,改用简单的逻辑和整数运算,可以有效降低功耗。
2. 睡眠模式:MSP430微控制器具有多种睡眠模式,可以在不需要工作时进入低功耗状态。
通过选择合适的睡眠模式,可以最大程度地降低功耗。
在睡眠模式中,MSP430微控制器会关闭一些不必要的模块和电源,从而降低功耗。
3. 时钟管理:时钟是微控制器的核心,也是功耗的主要来源之一。
合理管理时钟可以有效减少功耗。
在MSP430微控制器中,可以通过调整时钟频率、选择更低功耗的时钟源以及使用MCLK、SMCLK和ACLK等不同的时钟模块来实现功耗优化。
4. I/O 管理:I/O 端口通常是微控制器的功耗主要负责者之一。
通过合理管理I/O 端口,可以降低功耗。
例如,及时关闭不需要的输入/输出端口,降低端口的驱动能力或适当使用外部中断等方法。
5. 采用低功耗模块:MSP430微控制器具有丰富的低功耗模块和外设,可以根据需求选择合适的模块来降低功耗。
例如,MSP430可以通过功耗优化的ADC模块、计时器模块和UART模块等,实现对外设的低功耗控制。
除了以上几种方法,还有一些其他的设计技巧可以帮助我们在低功耗条件下充分发挥MSP430微控制器的优势。
6. 电源电压调整:降低微控制器的电源电压可以有效减少功耗。
MSP430微控制器通常具有多种电源供电电压选择,可以根据应用需求选择合适的工作电压。
MSP430中断中断源(中断分类)中断首先需要有中断源发出中断请求,并征得系统允许(屏蔽,优先权)后才会发生。
转去执行中断服务程序前需保护中断现场,执行完中断服务程序后应恢复中断现场。
MSP430有三种中断类型:系统中断,可屏蔽中断,不可屏蔽中断NMI。
不可屏蔽中断NMI不能被总中断使能位GIE控制,而是由特殊的标志位(NMIIE , ACCVIE , OFIE)来控制的。
NMI中断可由以下三种中断源产生:(1)当RST/NMI引脚配置为NMI模式,引脚上出现上升沿下降沿。
(2)Flash访问错误。
当Flash访问出错时,ACCVIFG被置位,当ACCVE被置位时,Flash;访问出错产生一个NMI事件。
(3)发生晶振失效。
当OFIE被置位时,晶振失效产生一个NMI事件。
中断处理从接受中断请求开始到开始执行中断服务程序的第一条指令,中断的准备过程需要6个周期。
(1)若CPU处于AM状态,则完成正在执行的指令;若CPU处于处于低功耗状态,则退出低功耗状态。
(2)把PC寄存器内容入栈。
(3)把SR寄存器内容入栈。
(4)如果同时有多个中断,则选择优先级最高的中断。
(5)如果中断是单源中断,则中断标志位自动复位;如果中断是多中断源,则需要中断服务程序复位。
(6)SR清零,结束低功耗模式。
由于GIE被清除,其他的中断被屏蔽。
因此,中断不能被嵌套。
(7)中断向量表被装入PC寄存器,并从该地址开始执行中断服务程序。
中断返回过程中断由RETI指令结束,从中返回需要消耗5个是种周期。
(1)将SR寄存器的值从堆栈弹出,恢复中断前的设置。
(2)将PC寄存器的值从堆栈弹出,程序从PC的地址执行。
中断标志位中断产生的时候,CPU会自动进入相应的中断服务程序。
当多种中断对应了一个中断源时,需要判断到底是哪个中断发生的时候就要用到IFG标识位。
通过读取IFG标识来确定是哪一种中断。
5种低功耗模式分别为LPM0~LPM4(LOW POWER MODE),CPU的活动状态称为AM(ACTVE MODE)模式。
其中AM耗电最大,LPM4耗电最省,仅为0.1uA。
另外工作电压对功耗的影响:电压越低功耗也越低。
系统PUC复位后,MSP430进入AM状态。
在AM状态,程序可以选择进入任何一种低功耗模式,然后在适当的条件下,由外围模块的中断使CPU退出低功耗模式,返回AM模式,再由AM模式选择进入相应的低功耗模式,如此类推。
工作模式的选择由状态寄存器SR中的SCG1、SCG0、OSCOFF、CPUOFF 位控制。
由于在CPU的头文件中对CPU内的各寄存器和模块的各种工作模式都作了详尽的定义,所以编程时尽可能的利用就是了。
如:要进入低功耗模式0,可在程序中直接写:LPM0; 。
进入低功耗模式4,可以写:LMP4;就可以了。
退出低功耗模式如下:LPM0_EXIT; //退出低功耗模式0LPM4_EXIT; //退出低功耗模式4MSP430的电压已经降到了3.3v,虽然不是最低的(arm的部分芯片内核工作电压降到了1.8v),但是这已经是比较低的了;MSP430比较出彩的地方一个是把一颗芯片分成了N个不同的模块部分,不用的部分功能模块可以关闭掉,电流近似为零;另一个出彩的地方是,可以有三个时钟源,并产生更多的内部可用工作频率,让内部各个模块工作在不同的频率,不用的时钟还可以关掉(具体参看上一节MSP430之系统时钟篇)。
后两种方法主要是通过软件的方式进行设置的,具体来讲,MSP430可以有6种不同的工作模式:设置其工作模式主要是设置寄存器SR的SCG0、SCG1、OscOff、CPUOff 位。
SCG0=1且DCOCLK没有用于MCLK和SMCLK时,直流发生器禁止;SCG1=1时,SMCLK禁止; CPUOff=1时,MCLK被禁止;只有CPUOff=1时,OscOff才可以=1,此时晶振被禁止。
MSP430单片机硬件知识-复位MSP430单片机是TI公司1996年开始推向市场的超低功耗微处理器,另外他还集成了很多模块功能,从而使得用一片MSP430 芯片可以完成多片芯片才能完成的功能,大大缩小了产品的体积与成本。
如今,MSP430单片机已经用于各个领域,尤其是仪器仪表、监测、医疗器械以及汽车电子等领域。
下面来说一下它的主要特点:(1)低电源电压范围,1.8~3.6V。
(2)超低功耗,拥有5种低功耗模式(以后会详细介绍)。
(3)灵活的时钟使用模式。
(4)高速的运算能力,16位RISC架构,125ns指令周期。
(5)丰富的功能模块,这些功能模块包括:A:多通道10-14位AD转换器;B:双路12位DA转换器;C:比较器; D:液晶驱动器;E:电源电压检测;F:串行口USART(UART/SPI);G:硬件乘法器;H:看门狗定时器,多个16位、8位定时器(可进行捕获,比较,PWM输出);I:DMA控制器。
(6)FLASH存储器,不需要额外的高电压就在运行种由程序控制写擦欧哦和段的擦除;(7)MSP430芯片上包括JTAG接口,仿真调试通过一个简单的JTAG接口转换器就可以方便的实现如设置断点、单步执行、读写寄存器等调试;(8)快速灵活的变成方式,可通过JTAG和BSL两种方式向CPU内装在程序。
关于他的内存器结构,在匠人的博客里已有详细的介绍,大家去看就是了。
在这里我主要说说MSP430单片机的复位吧。
MSP430的复位信号有2种:上电复位信号(POR)、上电清除信号(PUC)。
还有能够触发POR和PUC的信号:5种来在看门狗,1种来自复位管脚,1种来自写FLASH键值出现错误所产生的信号。
POR信号只在2种情况下发生:(1)微处理上电;(2)RST/NMI管脚上产生低电平时系统复位。
PUC信号产生的条件:(1)POR信号产生;(2)看门狗有效时,看门狗定时器溢出;(3)写看门狗定时器安全键值出现错误;(4)写FLASH存储器安全键值出现错误。
MSP430的低功耗事件驱动工作模式MSP430系列单片机的各个模块都可以独立运行,如定时器、输入/输出端口、A/D转换、看门狗、液晶显示器等都可以在CPU休眠的状态下独立工作。
若需要主CPU工作,任何一个模块都可以通过中断唤醒CPU,从而使系统以最低功耗运行。
让CPU工作于突发状态可以充分利用CPU的低功耗性能。
通常,使用软件将CPU设定到某一低功耗模式,在需要时使用中断将CPU从休眠状态中唤醒,完成工作后又可以进入相应的休眠状态。
如:让CPU工作在LPM3状态,通过中断事件转换到AM活动模式,根据运行需要,又可以从AM状态进入相应的低功耗模式:LPM0/LPM3或LPM4。
系统的这些低功耗特性是靠系统对中断的响应来实现的。
系统响应中断的过程:(1)硬件自动中断服务。
包括PC入栈、SR入栈;中断向量赋给PC;GIE、CPUOFF、OSCOFF和SCG1清除;以及IFG标志位清除(单源中断标志)。
(2)执行中断处理子程序。
(3)执行RETI指令(中断返回),包括SR出栈;PC出栈。
例如:系统初始化完成后工作于低功耗模式0,中断事件触发到活动模式,中断处理结束后进入低功耗模式3。
;主程序……;初始化操作开始……;……;初始化结束BIS #GIE+CPUOFF, SR ; 主程序中设置低功耗模式0,LPM0;……;程序在这里停止;中断子程序…………;中断处理结束BIS #GIE+CPUOFF+SCG1+SCG0, 0(SP) ; 设置SR为低功耗模式3,LPM3RETI; 中断返回;系统进入低功耗模式3……如果主程序期待在中断返回之后继续执行某些操作,可以在中断处理子程序中改变SR的值为AM模式,系统中断退出后根据恢复的SR和PC的值,来执行设定的某些操作。
;主程序……;初始化操作开始……;……;初始化结束BIS #GIE+CPUOFF, SR ; 主程序中设置低功耗模式0,LPM0L1 操作1L2 操作2……;;中断子程序……;中断处理开始…………;中断处理结束BIS #GIE+CPUOFF, 0(SP) ; 设置SR为活动模式,AMRETI; 中断返回,系统进入活动模式……主程序执行到LPM0处停止执行,L1,L2等语句不执行。
MSP430 单片机的中断
中断是MSP430 微处理器的一大特色,有效地利用中断可以简化程序和提高执行效率。
MSP430 的几乎每个外围模块都能够产生中断,为MSP430 针对事件(即外围模块产生的中断)进行的编程打下基础。
MSP430 在没有事件发生时进入低功耗模式,事件发生时,通过中断唤醒CPU,事件处理完毕后,CPU 再次进入低功耗状态。
由于CPU 的运算速度和退出低功耗的速度很快,所以在应用中,CPU 大部分时间都处于低功耗状态。
MSP430 的中断分为3 种:系统复位、不可屏蔽中断、可屏蔽中断。
(1)系统复位的中断向量为0xFFFE。
(2)不可屏蔽中断的中断向量为0xFFFC。
响应不可屏蔽中断时,硬件自动将OFIE、NMIE、ACCVIE 复位。
软件首先判断中断源并复位中断标志,接着执行用户代码。
退出中断之前需要置位OFIE、NMIE、ACCVIE,以便能够再次响应中断。
需要特别注意点:置位OFIE、NMIE、ACCVIE 后,必须立即退出中断相应程序,否则会再次触发中断,导致中断嵌套,从而导致堆栈溢出,致使程序执行结果的无法预料。
(3)可屏蔽中断的中断来源于具有中断能力的外围模块,包括看门狗定时器工作在定时器模式时溢出产生的中断。
每一个中断都可以被自己的中断控制位屏蔽,也可以由全局中断控制位屏蔽。
MSP430单片机低功耗控制与系统工作模式详解2011-01-22 11:14CPU内状态寄存器SR中的SCG0、SCG1、OscOff和CPUOff位是重要的低功耗控制位。
只要任意中断被响应,PC和SR就被压入堆栈保存,在中断程序执行的过程中,SR 被清除(因为SR被清除,其GIE也被清除,所以中断嵌套被禁止,如果手动将GIE置位,将不论优先级的将该中断服务程序中断),CPU进入AM模式,中断处理之后,又可以恢复先前的工作方式(在中断处理子程序执行期间,通过间接访问堆栈数据,可以操作这些位;这样允许程序在中断返回(RETI)后,以另一种功耗方式继续运行)。
各控制位作用如下:SCG1:当SCG1复位时,使能SMCLK;SCG1置位则禁止SMCLK。
SCG0:当SCG0复位时,直流发生器被激活(相当于DCO被激活),只有SCG0被置位且DCOCLK信号没有用于MCLK或SMCLK,直流发生器才能被禁止。
OscOff:当OscOff复位时,LFXT晶体振荡器激活,只有当OscOff被置位且不用于MCLK 或SMCLK时,LFXT晶体振荡器才能被禁止。
CPUOff:当CPUOff复位时,用于CPU的时钟信号MCLK被激活,当CPUOff置位时,MCLK 停止。
控制位SCG1、SCG2、OscOff和CPUOff可由软件配置成6种不同的工作模式:1种活动模式和5种低功耗模式。
如下表所示:工作模式控制位CPU状态、振荡器及时钟活动模式(AM)SCG1=0SCG0=0OscOff=0CPUOff=0CPU处于活动状态MCLK活动SMCLK活动ACLK活动低功耗模式0 (LPM0)SCG1=0SCG0=0OscOff=0CPUOff=1CPU处于禁止状态MCLK被禁止SMCLK活动ACLK活动低功耗模式1 (LPM1)SCG1=0SCG0=1OscOff=0CPUOff=1CPU处于禁止状态如果DCO未用作MCLK或SMCKL,则直流发生器被禁止,否则仍保持活动MCLK被禁止SMCLK活动ACLK活动低功耗模式2 (LPM2)SCG1=1SCG0=0OscOff=0CPUOff=1CPU处于禁止状态如果DCO未用作MCLK或SMCKL,自动被禁止MCLK被禁止SMCLK被禁止ACLK活动低功耗模式3 (LPM3)SCG1=1SCG0=1OscOff=0CPU处于禁止状态DCO被禁止,直流发生器被禁止MCLK被禁止CPUOff=1 SMCLK被禁止ACLK活动低功耗模式4 (LPM4)SCG1=XSCG0=XOscOff=1CPUOff=1CPU处于禁止状态DCO被禁止,直流发生器被禁止所有振荡器停止工作MCLK被禁止SMCLK被禁止ACLK被禁止MSP430单片机低功耗控制与系统工作模式详解2011-01-22 11:14CPU内状态寄存器SR中的SCG0、SCG1、OscOff和CPUOff位是重要的低功耗控制位。