📄 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 + -