MSP430主系統(tǒng)時(shí)鐘以及430的低功耗設(shè)置
如何將系統(tǒng)時(shí)鐘設(shè)置到外部高頻晶體振蕩器,430的MCLK默認(rèn)的是DCO的,如何安全的從DCO切換到外部晶體振蕩器,這是一個(gè)很重要的步驟,因?yàn)榻?jīng)過(guò)此步驟,可以極大地提高430的處理能力,DCO在內(nèi)部,可以為cpu提供強(qiáng)勁穩(wěn)定的時(shí)鐘
本文引用地址:http://cafeforensic.com/article/201701/342830.htm#include
void main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
volatile unsigned int i;
P5DIR |=BIT4;//設(shè)置P5.4為輸出
P5SEL |=BIT4;//設(shè)置片內(nèi)主系統(tǒng)時(shí)鐘的輸出
//由這段代碼設(shè)置如何將DCO切換到高頻晶體振蕩器
BCSCTL1 &=~XT2OFF;//~0x80
do
{
IFG1 &=~OFIFG;//OFIFG為1表示外部晶體振蕩器失效
for(i = 0xff;i>0;i--);//IFG1是Interrupt Flag 1
}
while((IFG1 & OFIFG));//表示振蕩器已經(jīng)起振
BCSCTL2 |= SELM_2;//#define SELM_2 (0x80) /* MCLK Source Select 2: XT2CLK/LFXTCLK */
while(1);
}
低功耗模式的設(shè)置:
msp430內(nèi)部有4種低功耗模式,在進(jìn)入低功耗模式的時(shí)候,cpu停止,一般是由外部事件的響應(yīng)才能喚醒cpu
由于IAR軟件比較給力,所以進(jìn)入低功耗模式的常用格式
比如:
進(jìn)入低功耗模式2:LPM2;
退出低功耗模式2:LPM2_EXIT;
開(kāi)啟外部中斷:_EINT():
關(guān)閉外部中斷:_DINIT();
430外部中斷的模式
#include
main( void )
{
BCSCTL1 "=DIVA_2;//(0x20) /* ACLK Divider 2: /4 */
WDTCTL = WDT_ADLY_1000;//直接將看門(mén)狗定時(shí)器變成定時(shí)器,定時(shí)時(shí)間是1000毫秒
IE1 =WDTIE;//打開(kāi)定時(shí)器中斷
P2DIR |= BIT3;
while(1)
{
unsigned int i;
_BIS_SR(LPM3_bits +GIE);//進(jìn)入低功耗模式3,這種時(shí)候,cpu停止工作,同時(shí)打開(kāi)總的中斷 //_BIS_SR是一個(gè)本增函數(shù),
//_BIS_SR()是一個(gè)本增函數(shù),通過(guò)本函數(shù)可以對(duì)寄存器進(jìn)行直接的操作
//這句話等價(jià)于_EINT();
// LPM3;
P2OUT &=~BIT3;//相當(dāng)于把第五位輸出0
for(i = 180000;i>0;i--);//延時(shí)
P2OUT |= BIT3;//p3.5輸出1
}
}
#pragma vector =WDT_VECTOR
__interrupt void watchdag_timer(void)
{
//__BIC_SR_IRQ(LPM3_bits);//從中斷中,將低功耗模式退出,將cpu從睡眠模式喚醒
LPM3_EXIT;//退出低功耗模式
}
評(píng)論