⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 system.c

📁 MSP acquires data and sends through USB to PC. Check the link for PC capture software and project d
💻 C
字号:
/*
 * File:        system.c
 * Purpose:     System initialization functions
 * Author:      Peter Ivanov, Olimex Ltd.
 * Modified by:
 * Created:     2007-05-19 11:29:32
 * Last modify: 2007-06-10 13:14:02 ivanovp {Time-stamp}
 * Copyright:   (C) Peter Ivanov, Olimex Ltd., 2005, 2007
 * Licence:     GPL
 */
/**
 * \file system.c
 * \brief System initialization functions
 * \author Peter Ivanov, Olimex Ltd.
 */
/**********************************************************************************/
/*                                                                                */
/*    Copyright (C) 2005 OLIMEX  LTD.                                             */
/*                                                                                */
/*    Module Name    :  system module                                             */
/*    File   Name    :  system.h                                                  */
/*    Revision       :  01.00                                                     */
/*    Date           :  2006/10/05 initial version                                */
/*                                                                                */
/**********************************************************************************/
#include "system.h"
//#include <msp430x44x.h>
#include <msp430xG461x.h>


/****************************************************************************/
/*  Init system frequency                                                   */
/*  Function : InitFreq_XT2                                                 */
/*      Parameters                                                          */
/*          Input   :  Nothing                                              */
/*          Output  :  Nothing                                              */
/****************************************************************************/
void InitFreq_XT2(void)
{
    // External oscilator 8MHz

    /* Watchdog */
    // Stop watchdog timer
    WDTCTL = WDTPW + WDTHOLD;


    /* FLL+ Control Register 1 */
    // SMCLK on, XT2 on, XT2 for main oscilator, ACLK By 1
    FLL_CTL1 = SELM1 + SELS + FLL_DIV_1;
}

/****************************************************************************/
/*  Init system frequency                                                   */
/*  Function : InitFreq_XT1                                                 */
/*      Parameters                                                          */
/*          Input   :  Nothing                                              */
/*          Output  :  Nothing                                              */
/****************************************************************************/
void InitFreq_XT1(void)
{
    // External oscilator 32kHz
    // DCO - off

    /* Watchdog */
    // Stop watchdog timer
    WDTCTL = WDTPW + WDTHOLD;

    /* FLL+ Control Register 1 */
    // SMCLK off, XT2 off, LFXT1CLK for main oscilator, ACLK By 1
    FLL_CTL1 = SMCLKOFF + XT2OFF + SELM0 + SELM1 + FLL_DIV_1;

}

/****************************************************************************/
/*  Init system frequency                                                   */
/*  Function : InitFreq                                                     */
/*      Parameters                                                          */
/*          Input   :  Nothing                                              */
/*          Output  :  Nothing                                              */
/****************************************************************************/
void InitFreq(void)
{
    /* Watchdog */
    // Stop watchdog timer
    WDTCTL = WDTPW + WDTHOLD;

    /* FLL+ Control Register 0 */
    // Low Frequency, Oscillator capacitor ~6 pF
    //DCO+ set so freq = xtal 2 x N+1
    FLL_CTL0 = DCOPLUS + XCAP10PF;

    /* System Clock Control Register */
    // Enable modulation
    // fDCOCLK = (N + 1) * fcrystal
    // fDCOCLK = (29+1) * 32768 * 2 = 1 966 080 Hz ~ 2MHz
    //SCFQCTL = 29;

    /* System Clock Control Register */
    // Enable modulation
    // fDCOCLK = (N + 1) * fcrystal
    // fDCOCLK = (121+1) * 32768 * 2 = 7 995 392 Hz ~ 8MHz
    // SCFQCTL = 121;
    SCFQCTL = 121;

    /* FLL+ Control Register 1 */
    // SMCLK on, XT2 off, DCO for main oscilator, ACLK By 1
    // SMCLK clocked from DCO
    FLL_CTL1 = XT2OFF + SELM0 + FLL_DIV_1;
#if 0
    FLL_CTL0 &= ~XTS_FLL;                           // XT1 as low-frequency
    FLL_CTL0 = XCAP10PF;                            // set load capacitance for 32k xtal

    _BIC_SR (OSCOFF);                               // turn on XT1 oscillator

    do                                              // wait in loop until crystal is stable
    {
        IFG1 &= ~OFIFG;
    }
    while (IFG1 & OFIFG);

    FLL_CTL1 &= ~FLL_DIV0;                          // ACLK = XT1
    FLL_CTL1 &= ~FLL_DIV1;

    IFG1 &= ~OFIFG;                                 // clear osc. fault int. flag

    FLL_CTL1 &= ~SELM0;                             // set DCO as MCLK
    FLL_CTL1 &= ~SELM1;
#endif
}


/****************************************************************************/
/*  Preparing board to enter sleep mode - low power consumption             */
/*  Function : GoToSleep                                                    */
/*      Parameters                                                          */
/*          Input   :  Nothing                                              */
/*          Output  :  Nothing                                              */
/****************************************************************************/
void GoToSleep(void) 
{
    // Flash CS high - disable
    P7DIR |= BIT0;
    P7OUT |= BIT0;

    // MMA to sleep mode
    P8OUT &= ~BIT2;

    // LCD turn of light
    P7OUT |= BIT6;

    // IRDA disable
    P7DIR |= BIT7;
    P7OUT |= BIT7;

    // TX - low
    P4DIR |= BIT6;
    P4OUT &= ~BIT6;

    // MMC card
    P3DIR |= (BIT0|BIT2);
    P3OUT |= (BIT0|BIT2);

    // LCD CS high - disable
    P4OUT |= 0x04;
    // LCD RESET
    P7OUT &= ~BIT4;

    // EXT port
    P1DIR |= 0x3E;  P1OUT &= ~0x3E;
    P2DIR |= 0xBF;  P2OUT &= ~0xBF;
    P3DIR |= 0xF0;  P3OUT &= ~0xF0;
    P4DIR |= 0x13;  P4OUT &= ~0x13;
    P5DIR |= 0xFF;  P5OUT &= ~0xFF;
    P6DIR |= 0x17;  P6OUT &= ~0x17;
    P8DIR |= 0xFF;  P8OUT &= ~0xFF;
    P9DIR |= 0xFF;  P9OUT &= ~0xFF;
    P10DIR |= 0xFF;  P10OUT &= ~0xFF;

}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -