关于单片机通过串口输出中文/英文的方法:
本文只讨论STM32和瑞萨R8C系列MCU。
一:对于STM32F103:
1.对目标串口进行初始化配置,比如波特率、数据位等配置。
2.串口输出函数:
//发送一个字节数据
void UART1SendByte(unsigned char SendData)
{
USART_SendData(USART1,SendData);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
}
3.重定向函数:(注意在文件中加入头文件:#include <stdio.h>)
// 描述 :重定向c库函数printf到USART1。
int fputc(int ch, FILE *f)
{
// 将Printf内容发往串口 。
USART_SendData(USART1, (unsigned char) ch);
//while (!(USART1->SR & USART_FLAG_TXE));
return (ch);
}
4.经过以上配置,在main函数中就可以使用printf函数了!
如:printf("\r\n -------系统已启动!------ \r\n");
printf("\r\n --第%d次你好!--", counter);
二:对于瑞萨R8C系列:
1.对目标串口进行初始化配置,比如波特率、数据位等配置。
2.串口输出函数:
//发送一个字节数据
void UART2_SendByte8B(u8 dat)
{
u16 Counter=0;
u2tbl = dat; //8位数据位时,将要发送的数值放在发送缓冲寄存器的低8位。
//ti_u2c1 = 0则发送寄存器有数据,发送完毕后置1。
while( (!ti_u2c1) && (Counter != 1000) )
{
Counter++;
}
}
3.重定向函数:(注意在文件中加入头文件:#include "stdio.h")
//重定向C库函数printf到UART2。
int fputc(int ch, FILE *f)
{
//将printf内容发往串口。
UART2_SendByte8B((unsigned char) ch);
return (ch);
}
4.经过以上配置,在main函数中就可以使用printf函数了!
如:printf("\r\n -------系统已启动!------ \r\n");
printf("\r\n --第%d次你好!--", counter);
三:总结:
1.对STM32未观察加入重定向函数且使用pintf后的影响;
2.通过对瑞萨R8C观察,发现加入重定向函数且使用pintf后,ROM被多占用了9.12KB,
所以没特别需要,咱就不要让串口输出中文/英文字符了。
完结-160817