MSP430G2:低功耗模式下的IO学习
扫描二维码
随时随地手机看文章
MSP430最大的特点是超低功耗,本次学习的是超低功耗模式下的IO操作。
/******************************************************************************
* 超低功耗频率 1.5KHZ
* P1.0有1/100的周期激活
* 超低功耗的范例
* ACLK = VL0, MCLK = VLO/8 ~1.5kHz, SMCLK = n/a,主时钟选择超低功耗,超低频率的内部晶振的8分频,
* VLO:Internal Very-Low-Power Low-Frequency Oscillator 内部的超低功耗,低频率振荡器
* 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 数字信号控制的晶振
* 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都是状态标志位
* LFXT1:Low Frequency XT1 (低频晶振1)
*******************************************************************************/
#include //MSP430G2231头文件
/*********************************************************************************************************
* Function name: main
* Descriptions: 主函数
* 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 ,低频晶振选择内部的超低功耗,超低频率晶振。
IFG1 &= ~OFIFG; // Clear OSCFault flag,清除晶振错误标志位
__bis_SR_register(SCG1 + SCG0); // Stop DCO 禁止数控晶振
BCSCTL2 |= SELM_3 + DIVM_3; // MCLK = LFXT1/8 主时钟源选择LFXT1,分频系数选择8分频。
P1DIR = 0xFF; // All P1.x outputs 所有的P1端口都设置为输出
P1OUT = 0; // All P1.x reset P1端口值都清零
P2DIR = 0xFF; // All P2.x outputs 所有的P1端口都设置为输出
P2OUT = 0; // All P2.x reset P2端口值都清零
for (;;) // 主循环
{
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 延时
}
}