msp430的電壓已經降到了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,此時晶振被禁止。
1、活動模式-----am
正常的工作模式,這時cpu消耗的電能最大.
2、低功耗模式0-----
lpm0
cpuoff置位,cpu停止活動,但外圍模組繼續工作,aclk和mclk訊號保持活動,mclk的鎖頻壞控制正常工作.有關控制位設定為:scg0=0,scg1=0,oscoff=0,cpuoff=1。
3、低功耗模式1-----lpm1
cpuoff置位,cpu停止活動,但外圍模組繼續工作,mclk的鎖頻環控制停止工作,aclk與mclk保持活動,有關控制位設定為:scg0=0,scg1=1,oscoff=0,cpuoff=1。
4、低功耗模式2-----lpm2
cpuoff置位,cpu停止活動,但外圍模組繼續工作,mclk的鎖頻環控制停止,aclk活動,mclk停止,有關控制位設定為:scg0=0,scg1=1,oscoff=0,cpuoff=1。
5、低功耗模式3-----lpm3
cpuoff置位,cpu停止活動,但外圍模組繼續工作,mclk的鎖頻環控制和mclk停止工作,dco的dc發生器關閉,但aclk訊號仍保持活動,有關控制位設定為:scg0=1,scg1=1,oscoff=0,cpuoff=1。
6、低功耗模式4-----lpm4
cpuoff置位,cpu停止活動,但外圍模組繼續工作,mclk的鎖頻環控制和mclk停止工作,晶振停止,有關控制位設定為:scg0=x,scg1=x,oscoff=1,cpuoff=1。
處理器進入低功耗模式以後,一般由中斷來喚醒。可以是外部中斷,也可以是內部的定時器等中斷。
範例:
#include
void main(void)
// watchdog timer interrupt service routine
#pragma vector=wdt_vector
__interrupt void watchdog_timer(void)
在上面的程式中,main函式執行完畢之後即進入了低功耗模式,只是在中斷中,才能執行功能操作。其次,可以看出:1、從中斷返回後,依然是中斷狀態;2、main函式永遠不會返回,因為_bis_sr(lpm3_bits + gie)之後的語句永遠不可能執行。
MSP430微控制器低功耗結構
各控制位的作用如下 scg1 復位,使能smclk 置位,禁止smclk。scg0 復位,啟用直流發生器,只有scg0置位,並且dcoclk沒有被用作mclk或smclk時,直流發生器才能被禁止。oscoff 復位,啟用lfxt1,只有當oscoff被置位並且lfxt1clk不用於mclk或smcl...
MSP430 我的低功耗系統程式設計模板
主要應用前後台程式結構來實現,前台程式是各種中斷等突發事件,後台程式就是主迴圈,處理各種事件引起的各種任務 include msp430g2553.h int gtaskflag 0 任務標誌 位 void sysinit void main void if gtaskflag 0x0002 0x0...
MSP430定址模式
msp430的cpu支援7種源定址和4種目的定址 可利用暫存器的8 16和20位,長度為1 2或者3個字長。byte操作 讀源暫存器的低8位,然後將其寫入目的暫存器對應的低8位,目的暫存器的8 19位會被清空而源暫存器不受影響 word操作 讀源暫存器的低16位,然後將其寫入目的暫存器對應的低16位...