www.pudn.com > M26(2M).rar > main.c, change:2016-01-20,size:5708b


/*************************************************************************************************** 
	* Copyright (c) 2015, BIOHERMOS 
	* All rights reserved. 
	* 文件名称: Main.c 
	* 摘 要:    主函数 
	* 当前版本: V1.0, 易建, 2015-10-09 
	* 更改记录: 无 
***************************************************************************************************/ 
#include "Includes.h" 
#include "SerialSvr.h" 
 
 
void SysClkInit(void); 
void PortInit(void); 
void VarInit(void); 
void McuInit(void); 
void TimerA_Init(void); 
void TimerB_Init(u8 freq); 
 
/*************************************************************************************************** 
 * 函 数 名: main() 
 * 功能描述: 主函数 
 * 函数说明: 无 
 * 输  入: 无 
 * 返  回: 无 
***************************************************************************************************/  
void main (void) 
{ 
    WDTCTL = WDTPW + WDTHOLD; 
    SysClkInit();                                           // 系统时钟初始化 
    __bis_SR_register(GIE);                                 // Enter LPM0 w/ interrupt     
    McuInit(); 
    VarInit();                                              // 参数初始化  
     
    while (1) 
    { 
        QuectelM26_Demo(); 
        //BloodGlucose();                                     // 血糖主程序 
        //Uart_UartManger();                                  // 发送处理程序 
    } 
} 
 
/*************************************************************************************************** 
 * 函 数 名: VarInit 
 * 功能描述: 部分变量初始化 
 * 函数说明: 无 
 * 输  入: 无 
 * 返  回: 无 
***************************************************************************************************/ 
void VarInit(void) 
{ 
    //TimerAInit(); 
} 
 
void McuInit(void) 
{ 
    PortInit();                                             // IO端口初始化 
    UCA0_Init();                                            // 串口初始化 
    TimerA_Init(); 
    //TimerB_Init(20); 
    QuectelM26_Init(); 
} 
 
/*************************************************************************************************** 
 * 函 数 名: SysClkInit() 
 * 功能描述: 系统时钟初始化 
 * 函数说明: 无 
 * 输  入: 无 
 * 返  回: 无 
***************************************************************************************************/ 
void SysClkInit(void) 
{ 
    #ifdef CLK_8MHZ 
    u16 i; 
    FLL_CTL0 |= DCOPLUS + XCAP18PF;             // DCO+ set, freq = xtal x D x N+1 
    SCFI0 |= FN_4;                              // x2 DCO freq, 8MHz nominal DCO 
    SCFQCTL = 121;                              // (29+1) x 32768 x 2 = 2 MHz 
    for (i = 0xFFFF; i > 0; i--);               // Delay for FLL to set 
    for (i = 0xFFFF; i > 0; i--);               // Delay for FLL to set 
    #endif 
     
    #ifdef CLK_1MHZ 
    u16 i; 
    FLL_CTL0 |= XCAP18PF;             // DCO+ set, freq = xtal x D x N+1 
    SCFI0 |= FN_2;                              // x2 DCO freq, 8MHz nominal DCO 
    SCFQCTL = 63;                              // (29+1) x 32768 x 2 = 2 MHz 
    for (i = 0xFFFF; i > 0; i--);               // Delay for FLL to set 
    for (i = 0xFFFF; i > 0; i--);               // Delay for FLL to set 
    #endif 
} 
 
/*************************************************************************************************** 
 * 函 数 名: PortInit 
 * 功能描述: 端口设置 
 * 函数说明: 与功能有关端口设置在各功能模块的初化函数中定义 
 * 输  入: 无 
 * 返  回: 无 
***************************************************************************************************/ 
void PortInit(void) 
{ 
//    P1DIR |= BIT1 + BIT6; 
//     
//    P2SEL |= 0x00; 
//    P2DIR |= BIT5; 
//     
//    P2SEL  = 0x00; 
//    P2SEL |= BIT4 + BIT5; 
//    P2DIR |= BIT0 + BIT6 + BIT7; 
//     
//    P3DIR |= BIT0 + BIT1+ BIT2 + BIT3 + BIT4 +  BIT5 + BIT6 + BIT7; 
//     
//    P4DIR |= BIT0 + BIT1+ BIT2 + BIT5 + BIT6 + BIT7; 
//     
    P1SEL |= BIT1 + BIT4; 
    P1DIR |= BIT6; 
     
    P6SEL |= BIT5 + BIT6; 
    P6DIR |= BIT1 + BIT4; 
     
    P2SEL  = 0x00; 
    P2SEL |= BIT4 + BIT5; 
    P2DIR |= BIT0 + BIT3 + BIT6; 
    P2OUT |= BIT0; 
     
    P3DIR |= BIT2 + BIT4; 
     
    P4DIR |= BIT3 + BIT4 + BIT5 + BIT6; 
    P4OUT &= ~BIT6; 
} 
 
/*************************************************************************************************** 
 * 函 数 名: TimerA0_Init 
 * 功能描述: 定时器A0中断 
 * 函数说明: 中断频率20HZ 
 * 输  入: 无 
 * 返  回: 无 
***************************************************************************************************/ 
void TimerA_Init(void) 
{ 
#ifdef CLK_8MHZ 
    TACTL = TASSEL_2 + MC_1 + ID_3 + TAIE + TACLR;                 // SMCLK, cont. mode, interrupt 
    TACCR0 = 50000; 
#endif 
 
#ifdef CLK_1MHZ 
    TACTL = TASSEL_2 + MC_1 + ID_1 + TAIE + TACLR;                 // SMCLK, cont. mode, interrupt 
    TACCR0 = 52000; 
#endif 
} 
 
/*************************************************************************************************** 
 * 函 数 名: TimerA0_Init 
 * 功能描述: 定时器A0中断 
 * 函数说明:  
 * 输  入: freq: 正弦波频率,单位Khz 
 * 返  回: 无 
***************************************************************************************************/ 
void TimerB_Init(u8 freq) 
{ 
    TBCTL = TASSEL_2 + MC_1 + ID_3 + TBIE + TBCLR;                     // SMCLK, cont. mode, interrupt 
    TBCCR0 = 500 / freq - 1;    
} 
 
/*************************************************************************************************** 
 * 函 数 名: Delay 
 * 功能描述: 延时 
 * 函数说明: 无 
 * 输  入: 无 
 * 返  回: 无 
***************************************************************************************************/ 
void Delay(u32 clk) 
{ 
    while (clk--); 
}