stm32f103 串口通讯 printf 输出中文的问题
使用stm32f103vct6的mcu用printf输出到串口usart2上笔记本用串口调试助手,怎么显示中文啊? 串口调试助手没法收到中文江苏方言 放到 东北也不能通用,虽然都是汉语 怎么能把中文输出了啊:'(:'(:'(:'(:'(:'(:'( 这个和中文编码相关的,单片机发送对应汉子的编码,一般应该是UTF-8,串口调试助手的显示区要支持UTF-8编码就可以中文显示了,Securt是支持显示中文的 skyi 发表于 2018-8-24 12:02
这个和中文编码相关的,单片机发送对应汉子的编码,一般应该是UTF-8,串口调试助手的显示区要支持UTF-8编码 ...
有没有具体的示例啊 hhhhhhhaa 发表于 2018-8-24 12:24
有没有具体的示例啊
看到没有啊
自己写一个printf输出函数,串口就可以打印中文了
本帖最后由 ls164013 于 2018-8-24 15:24 编辑
int fputc(int c, FILE *fp)
{
while((USART1->SR&1<<6)==0);
USART1->DR=c;
return 0;
}
下面是打印函数
sprintf((char *)a,"温度:%.1f C 湿度%.1f ",t,h);
Show_HZORZF(0,0,a);
//while((ADC1->SR&1<<1)==0);
sprintf((char *)str,"温度:%d 湿度: %d¿光照:%d ",ADC,ADC,ADC);
我这这样是可以串口输出汉字的 ls164013 发表于 2018-8-24 15:17
int fputc(int c, FILE *fp)
{
while((USART1->SR&1SR&1
你这的乱码是什么啊?我知道为什么不能输出汉字了,在keil里的中文是UTF-8的编码格式,一个汉字用16进制表示的话是三个举个例子吧
比如汉字“大”按照unicode转utf-8的编码规则,汉字使用3字节序列
所以套用三字节转换公式
0800 - FFFF
1110xxxx 10xxxxxx 10xxxxxx
其中用x代表的16位使用unicode相应的位来填充
0x5927转换为2进制0101 1001 0010 0111
填充到上面公式中的x中变成
11100101 10100100 10100111
用16进制表示为E5 A4 A7
而大的AIISC码用16进制表示的话就是B4F3
串口调试助手只能把AIISC码格式的16进制转换成汉字,不能把UTF-8类型的16进制汉字转换出来,所以才出现了乱码的现象 hhhhhhhaa 发表于 2018-8-24 15:24
你这的乱码是什么啊?我知道为什么不能输出汉字了,在keil里的中文是UTF-8的编码格式,一个汉字用16进制 ...
第一次用这个 复制粘贴 出了点意外:L