📄 hal.c.svn-base
字号:
#include "includes.h"
static void McuInit( void )
{
char i;
BCSCTL1 &= ~XT2OFF; // Select XT2; ACLK=32.768KHz
do
{
IFG1 &= ~OFIFG; // Clear OSCFault flag
for(i=0xFF; i>0; i--); // Time for flag to set
}while ((IFG1 & OFIFG) != 0 ); // OSCFault flag still set
BCSCTL2 = SELM_2 + SELS; // MCLK=XT2CLK; SMCLK=XT2CLK;
}
static void Uart0Init(void)
{
UCTL0 = CHAR + SWRST; // 8-bits stop; USART Software Reset
UTCTL0 = SSEL1 + SSEL0 + TXEPT; // MCLK; TX Buffer empty
// 115200 baud rate
UBR00 = 0x45;
UBR10 = 0x00;
UMCTL0 = 0x4A;
ME1 |= UTXE0+URXE0; // Enable USART0 TXD
P3SEL |= ( BIT4+BIT5 ); // IO
P3DIR |= BIT4; // P3.4 output direction
P3DIR &= ~BIT5; // P3.5 input direction
UCTL0 &= ~SWRST; // USART Software Reset
IE1 &= ~URXIE0; // Disable input/output interrupts
P3SEL &=~(BIT1+BIT2+BIT3);
P3DIR |=(BIT1+BIT2+BIT3);
P3OUT &= ~BIT1; // set EN=0, Enable the MAX3221 Receiver
P3OUT |= BIT3; //set FORCEOFF=1, Enable MAX3221
P3OUT |= BIT2;//INVALID=1// Turn on MAX3221
}
void HalTimerInit(void)
{
TACTL = TASSEL_1 + TACLR + MC_1;
TACCTL0 |= CCIE;
TACCR0 = 328;
}
static void HalLedInit(void)
{
P6SEL &= ~(BIT3+BIT4);
P6DIR|= (BIT3+BIT4);
P6OUT &= ~(BIT3+BIT4);
}
void Uart0SendByte(INT8U data)
{
TXBUF0 = data; // Send a byte
while( ( UTCTL0 & 0x01 ) == 0x00 ); // Wait for Tx to finish
}
void Uart0SendData( INT8U * data ,INT8U len )
{
INT8U i;
for( i = 0 ; i < len ; i ++ )
{
TXBUF0 = data[i];
while( ( UTCTL0 & 0x01 ) == 0x00 );
}
}
void HalOpenLed(INT8U i)
{
switch(i)
{
case 1:
P6OUT |= BIT3;
break;
case 2:
P6OUT |= BIT4;
break;
}
}
void HalCloseLed(INT8U i)
{
switch(i)
{
case 1:
P6OUT &=~ BIT3;
break;
case 2:
P6OUT &=~ BIT4;
break;
}
}
void StateInit( void )
{
WDTCTL = WDTPW + WDTHOLD; /* 禁止看门狗 */
McuInit( );
Uart0Init( );
HalLedInit( );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -