MSP430G2:低功耗模式下的IO學(xué)習(xí)
MSP430最大的特點(diǎn)是超低功耗,本次學(xué)習(xí)的是超低功耗模式下的IO操作。
/**********************************************************
* 超低功耗頻率 1.5KHZ
* P1.0有1/100的周期激活
* 超低功耗的范例
* ACLK = VL0, MCLK = VLO/8 ~1.5kHz, SMCLK = n/a,主時(shí)鐘選擇超低功耗,超低頻率的內(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 晶振錯(cuò)誤標(biāo)志位
* INTERRUPT FLAG:OFIFG
* DCO:digitally controlled oscillator 數(shù)字信號(hào)控制的晶振
* BCSCTL2 :Basic clock system control 2
* SELM_3:MCLK Source Select 3: LFXTCLK
* DIVM_3:MCLK Divider 3: /8 MCLK時(shí)鐘8分頻
* MCLK: Main clock 主時(shí)鐘
* SCG1 + SCG0都是狀態(tài)標(biāo)志位
* LFXT1:Low Frequency XT1 (低頻晶振1)
***************************************************************/
#include //MSP430G2231頭文件
/**********************************************
* Function name: main
* Descriptions: 主函數(shù)
* input parameters: 無(wú)
* output parameters: 無(wú)
* Returned value: 無(wú)
* 超低功耗模式下的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,清除晶振錯(cuò)誤標(biāo)志位
__bis_SR_register(SCG1 + SCG0); // Stop DCO 禁止數(shù)控晶振
BCSCTL2 |= SELM_3 + DIVM_3; // MCLK = LFXT1/8 主時(shí)鐘源選擇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 延時(shí)
P1OUT = ~0x01; // P1.0 reset P1.0清零
for (i = 1000; i > 0; i--); // Delay 100x 延時(shí)
}
}
評(píng)論