注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
北北的个人空间 https://home.eeworld.com.cn/space-uid-348360.html [收藏] [复制] [分享] [RSS]
日志

关于单片机通过串口输出中文/英文的方法

已有 6294 次阅读2016-8-17 18:25 |个人分类:MCU| 单片机, 串口输出英文, 中文

关于单片机通过串口输出中文/英文的方法:
本文只讨论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
评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章