?? init.c
字號:
#include"Init.h"
void initSys(void)
{
unsigned int x0;
BCSCTL1&=~XT2OFF; //打開XT2振蕩器
do
{
IFG1&=~OFIFG;
for(x0=0x20;x0>0;x0--);
}while((IFG1&OFIFG)!=0);
BCSCTL2=SELM_2+SELS; //選擇MCLK,SMCLK為XT2;SELS為選擇SMCLK,8M
}
void ADC12_init(void)
{
P6SEL |= 0x03; // P6.0-ADC option select
ADC12CTL0 |= SHT0_2 +ADC12ON+MSC; // Set sampling time, turn on ADC12
ADC12CTL1 |= SHP+CONSEQ_1; // Use sampling timer
ADC12CTL1 |= CSTARTADD_0; //轉換起始地址,CSTARTADD_0>>ADC12MCTL0,
//ADC12IE = 0x01; // Enable interrupt
ADC12MCTL0 = INCH_0+SREF_0;
ADC12MCTL1 = INCH_1+SREF_0+EOS;
ADC12CTL0 |= ENC+ADC12SC; // Start convn, software controlled
}
void Uart_init(void)
{
USART_SEL|= 0xC0; // P3.6,7 = USART1 TXD/RXD |= 0xC0; // P3.4,5 = USART0 TXD/RXD
UCA1CTL1 |= UCSSEL0; // CLK = ACLK
// UCA1BR0 = 0x36; // 32kHz/9600 = 3.41
UCA1BR1 = 0x00;
UCA1BR0 = 0x6D;
UCA1MCTL = 0x10;
//UCA1MCTL |=UCBRS2 + UCBRS0; // Modulation UCBRSx = 3
UCA1CTL0 &= ~(UCMODE0 +UCMODE1);
UCA1CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
UC1IE |= UCA1RXIE; // Enable USCI_A1 RX interrupt
}
void Timerb_init(void)//定時器B初始化
{
TBCTL=TBSSEL0+TBCLR;
TBCCTL0=CCIE;
TBCCR0=16384;
TBCTL|=MC0;
}
//串行口寫一字節
void usart_putchar( char c)
{
if(c == '\n')
usart_putchar('\r') ;
else if(c == '\0') ;
else
{
while (!(UC1IFG & UCA1TXIFG)); // USCI_A0 TX buffer ready?
UCA1TXBUF = c;
}
}
//發送字符串的函數
void String_printf( char *p)
{
do
{
usart_putchar(*p);
}
while (*(p++) != '\0');
usart_putchar('\n');
}
/*
//大家注意,MSP340F2上電后UCA0的中斷標志寄存器IFG2 中UCA0TXIFG發送中斷標志位就置1.
//在初始化時,只要總中斷允許了,同時發送中斷也允許了.初始化完后,發送中斷服務程序就
//被馬上執行.
//當UCA0TXBUF空閑時,中斷標志寄存器IFG2 中UCA0TXIFG發送中斷標志位就置1.
//發送中斷服務程序
#pragma vector =USCIAB1TX_VECTOR
__interrupt void USCI1TX_ISR(void)
{
if(nTX_Len != 0) //數據是否發完
{
Sendover_Flag=0;
UCA1TXBUF = UART_TX_BUF[nSend_TX];
nSend_TX += 1;
_NOP();_NOP();
if(nSend_TX>=nTX_Len)
{
nSend_TX =0;
nTX_Len=0;
Sendover_Flag=1;
UC1IE &= ~UCA1TXIE;
}
}
}*/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -