前言
printf,scanf只负责格式化输入输出的字符,他们分别依靠getchar和putchar函数,只要实现在单片机上的getchar函数和putchar函数,并且头文件包含stdio.h
即可正常使用printf函数和scanf函数。
第一步,配置UART及初始化模块
/*
*UART模块初始化函数
*/
void Uart_Init(void)
{
//-----开启IO口的TXD和RXD功能-----
P1SEL = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD
P1SEL2 = BIT1 + BIT2;
UCA0CTL1 |= UCSWRST;
//-----设置UART时钟源为ACLK-----
UCA0CTL1 |= UCSSEL_2; // CLK = SMCLK
//-----配置波特率参数9600bps-----
UCA0BR0 = 0x41;
UCA0BR1 = 0x03;
UCA0MCTL = 0x00;
//复位及开中断
UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
IE2 |= UCA0RXIE; // Enable USCI_A0 RX interrupt
__bis_SR_register(GIE);
}
第二步,编写基本收发函数
/*
*发送一个字符/数字 八位-一个字节
*参数:__Char:字符
*/
void Send_Char(uint8 Char)
{
while(!(IFG2 & UCA0TXIFG));//SBUFF为空时触发标志位执行下面语句
UCA0TXBUF=Char;
}
/*
*发送一个字符串
*参数:__Str:字符
*/
void Send_String(uchar *Str)
{
uchar i=0;
while(Str[i]!='\0')
{
Send_Char(Str[i]);
i++;
}
Send_Char(Str[i]);
}
/*
*接收一个字符
*/
uchar get_char(void)
{
__bis_SR_register(LPM0_bits); //进入低功耗等待接受中断发生
return Receive_Data;