MSP430G2:低功耗模式下的IO學習
MSP430最大的特點是超低功耗,本次學習的是超低功耗模式下的IO操作。
/**********************************************************
* 超低功耗頻率 1.5KHZ
* P1.0有1/100的周期激活
* 超低功耗的范例
* ACLK = VL0, MCLK = VLO/8 ~1.5kHz, SMCLK = n/a,主時鐘選擇超低功耗,超低頻率的內(nèi)部晶振的8分頻,
* VLO:Internal Very-Low-Power Low-Frequency Oscillator 內(nèi)部的超低功耗,低頻率振蕩器
* BCSCTL3 是 Basic clock system control 3 ,Mode 2 for LFXT1。
* 選擇模式2
* IFG1:SFR interrupt flag 1(Special Function)
* INTERRUPT SOURCE:Oscillator fault 晶振錯誤標志位
* INTERRUPT FLAG:OFIFG
* DCO:digitally controlled oscillator 數(shù)字信號控制的晶振
* BCSCTL2 :Basic clock system control 2
* SELM_3:MCLK Source Select 3: LFXTCLK
* DIVM_3:MCLK Divider 3: /8 MCLK時鐘8分頻
* MCLK: Main clock 主時鐘
* SCG1 + SCG0都是狀態(tài)標志位
* LFXT1:Low Frequency XT1 (低頻晶振1)
***************************************************************/
#include //MSP430G2231頭文件
/**********************************************
* Function name: main
* Descriptions: 主函數(shù)
* input parameters: 無
* output parameters: 無
* Returned value: 無
* 超低功耗模式下的IO端口操作
**************************************************************/
void main(void)
{
volatile unsigned int i; // Volatile to prevent removal
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer 禁止看門狗
BCSCTL3 |= LFXT1S_2; // LFXT1 = VLO ,低頻晶振選擇內(nèi)部的超低功耗,超低頻率晶振。
IFG1 = ~OFIFG; // Clear OSCFault flag,清除晶振錯誤標志位
__bis_SR_register(SCG1 + SCG0); // Stop DCO 禁止數(shù)控晶振
BCSCTL2 |= SELM_3 + DIVM_3; // MCLK = LFXT1/8 主時鐘源選擇LFXT1,分頻系數(shù)選擇8分頻。
P1DIR = 0xFF; // All P1.x outputs 所有的P1端口都設(shè)置為輸出
P1OUT = 0; // All P1.x reset P1端口值都清零
P2DIR = 0xFF; // All P2.x outputs 所有的P1端口都設(shè)置為輸出
P2OUT = 0; // All P2.x reset P2端口值都清零
for (;;) // 主循環(huán)
{
P1OUT |= 0x01; // P1.0 set P1.0置位
for (i = 10; i > 0; i--); // Delay 1x 延時
P1OUT = ~0x01; // P1.0 reset P1.0清零
for (i = 1000; i > 0; i--); // Delay 100x 延時
}
}
評論