CPU的活動狀態稱為AM(ACTVE MODE)模式。其中AM耗電最大,LPM4耗電最省,僅為0.1uA。另外工作電壓對功耗的影響:電壓越低功耗也越低。 系統PUC復位後,MSP430進入AM狀態。在AM狀態,程序可以選擇進入任何壹種低功耗模式,然後在適當的條件下,由外圍模塊的中斷使CPU退出低功耗模式,返回AM模式,再由AM模式選擇進入相應的低功耗模式,如此類推。
CPU的結構:16個寄存器R0-R15,16位算數邏輯單元ALU和壹個指令控制單元。
。寄存器中R4-R15是通用寄存器沒有特殊功能。
R0-R3具有特殊性:
R0:程序計數器PC(Program counter),存放著下壹條要從程序存儲器中取出的指令的地址。
R1:堆棧指針SP(Stack Point),系統堆棧在系統調用子函數或者進入中斷服務程序時,保護程序計數器PC。
R2:狀態寄存器SR(State Register):
R3:常數發生器
狀態寄存器SR
工作模式的選擇由狀態寄存器SR中的SCG1、SCG0、OSCOFF、CPUOFF位控制。由於在CPU的頭文件中對CPU內的各寄存器和模塊的各種工作模式都作了詳盡的定義,所以編程時盡可能的利用就是了。如:要進入低功耗模式0,可在程序中直接寫:LPM0; 。進入低功耗模式4,可以寫:LMP4;就可以了。退出低功耗模式如下:
LPM0_EXIT; //退出低功耗模式0
LPM4_EXIT; //退出低功耗模式4
LPM0:CPU停止工作,MCLK時鐘停止,SMCLK、ACLK時鐘還在工作。
LPM1:CPU停止工作,MCLK時鐘停止,在活動模式如果DCO沒有作為MCLK和SMCLK時鐘時,則直流發生器被禁止,否則就保持活動狀態,SMCLK、ACLK時鐘依然還在工作。
LPM2:CPU停止工作,MCLK、SMCLK時鐘停止工作,如果DCO沒有作為MCLK、SMCLK,自動被禁止直流發生器保持有效,ACLK還處於工作中。
LPM3:CPU停止工作,MCLK、SMCLK時鐘停止工作,DCO時鐘也停止工作,僅ACLK時鐘還處於工作狀態。
LPM4:CPU停止工作,MCLK、SMCLK時鐘停止工作,DCO時鐘也停止工作,ACLK也停止工作。此時功耗最低。
壹般情況下,處理器進入低功耗模式後,由中斷來喚醒,外部中斷或內部中斷。
如果想進入低功耗1,則程序可以為:_BIS_SR(LPM1_bits + GIE);退出低功耗1,則程序可以為:LPM1_EXIT; 進入其他低功耗和退出低功耗壹樣。
低功耗執行的壹個過程:程序從main函數入口開始執行程序,當遇到進入低功耗程序時,如:_BIS_SR(LPM1_bits + GIE);此時相當於下面的程序處於停止狀態不再執行,當有壹個中斷來到,則會進入中斷處理程序,自動退出低功耗,如果在中斷中沒有沒有退出低功耗,當中斷服務程序執行完成後,又會重新進入低功耗。
不同的低功耗模式就是配置不同的SCG1,SCG0,OscOff,CPUOff.
SCG1:復位使能SMCLK,置位則禁止SMCLK.
SCG0:復位激活DCO,置位且DCOCLK不用於MCLK或SMCLK時禁止DCO。
OscOff:復位則LFXT激活,置位且LFXT不用於MCLK或SMCLK時,LFXT振蕩器禁止--對應著ACLK。
CPUOff:復位則MCLK激活,置位則MCLK停止。