📄 uart.c
字号:
#include "io430.h"
#include "in430.h"
#include <string.h>
void halUartInit(unsigned int baud)
{
//UART
// Configure USART in UART mode, 8-bit, 1-stop, no parity.
// Hold logic in reset state while configuring other registers
#if 0
P3SEL |= (BIT6 + BIT7); // P3.5,6 = USART1 TXD/RXD
P3DIR |= BIT6; // P3.5,6 output direction
UCTL1 = (0*PENA) // 7 Parity Enable 0=Disabled
|(0*PEV) // 6 Parity Select 0= Odd
|(0*SPB) // 5 Stop Bit Select 0= 1 Stop bit
|(1*CHAR) // 4 Character Length 1= 8-bit data
|(0*LISTEN) // 3 Loopback control 0= Loopback disabled
|(0*SYNC) // 2 Synchronous Mode 0= UART mode
|(0*MM) // 1 Multiprocessor Mode 0= Idle-line multiproc control
|(1*SWRST); // 0 Software Reset 1= Logic Held in Reset State ...
// while configuring other registers
UTCTL1 |= SSEL1; // UCLK = SMCLK
switch(baud)
{
case 9600:
// UTCTL1 = SSEL0; // UCLK = ACLK
UBR01 = 0xD0; // 2MHz/9600
UBR11 = 0x00; //
// UMCTL1 = 0x4a; //
break;
case 19200:
// UTCTL1 = SSEL1; // UCLK = SMCLK
UBR01 = 0x68; // 2MHz/19200
UBR11 = 0x00; //
// UMCTL0 = 0x55; //
break;
case 57600:
// UTCTL1 = SSEL1; // UCLK = SMCLK
UBR01 = 0x22; // 2MHz/57600
UBR11 = 0x00; //
UMCTL1 = 0x7B; //
break;
case 115200:
// UTCTL1 = SSEL1; // UCLK = SMCLK
UBR01 = 0x11; // 2MHz/115.2k
UBR11 = 0x00; //
UMCTL1 = 0x29; //
break;
default:
break;
}
U1ME |= UTXE1+URXE1 ; // Enabled USART1 TXD/RXD
UMCTL1 = 0;
// U0IFG &= ~URXIFG0; // Clear USART1 RX interrupt flag
// U0IE |= URXIE0+UTXIE0; // Enable USART1 RX + TX interrupt
// U0IE |= URXIE0; // Enable USART1 RX interrupt
UCTL1 &= ~(SWRST); // 8-bit character - clr SWRST bit
// Rosc
#endif
}
//----------------------------------------------------------------------------------
// void halUartWrite(const uint8* buf, uint16 length)
//----------------------------------------------------------------------------------
void UartWrite(const char * buf)
{
int i;
for(i = 0; i < strlen(buf); i++)
{
while (!(U1IFG & UTXIFG1)); // wait till TX buf empty
TXBUF1=buf[i];
}
}
char UartRead(void)
{
while (!(U1IFG & URXIFG1)); // wait till TX buf empty
return U1RXBUF;
// while (!halUARTgetCharIsReady ());
// return U1RXBUF;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -