新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > MSP430G2:低功耗模式下的IO學習

        MSP430G2:低功耗模式下的IO學習

        作者: 時間:2013-01-16 來源:網絡 收藏

        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 //231頭文件

        /**********************************************

        * 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 延時

        }

        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 星子县| 辽源市| 武汉市| 绥德县| 封开县| 芷江| 铜山县| 公安县| 连南| 深水埗区| 稻城县| 师宗县| 县级市| 贵德县| 临泽县| 稷山县| 沙雅县| 天峨县| 宜昌市| 泰州市| 泾源县| 井陉县| 白银市| 桂东县| 福州市| 友谊县| 子长县| 德化县| 岚皋县| 扶余县| 西和县| 汶上县| 临潭县| 隆化县| 阳西县| 阳江市| 比如县| 云林县| 宁河县| 南开区| 库车县|