微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > STM32用printf串口输出中文乱码,要怎么解决?

STM32用printf串口输出中文乱码,要怎么解决?

时间:10-02 整理:3721RD 点击:
波特率没设置错,据说是keil的编码问题,但设置成GB2312还是乱码。main.c文件之前在写注释的时候乱码,用文本编辑器从ANSI转成UTF-8了,现在串口输出中文又乱码。文本编辑器又转不了GB2312。

试试这个,打开你keil的EDIT下拉菜单,最下面有一个configuration,点击它,在editor选项里有一个encoding,这里选择   GB2312

809496325QQ替你分忧

没理解了是printf输出的是乱码  还是.c文件中的中文是乱码
   要设置成2312编码之后才能复制粘贴文本到keil中不出现乱码 已经乱的我也想转过来
      正常使用printf要么勾选 usemicrolib选项  要么自己比如说  网上提供的方法   自己做个函数然后再用printf

之前是.c文件的中文乱码,我把文件编码转成了UTF-8解决了。但现在用到printf,输出的中文是乱码。

我用printf 可以输出中文啊   貌似就是这个重定向文件 貌似也得勾选microlib 需不需勾选不太了解
//Printf重定向文件!
int fputc(int ch, FILE *f)
{
USART_SendData(USART1, (unsigned char) ch);// USART1 ? USART2 ?
while (!(USART1->SR & USART_FLAG_TXE));
return (ch);
}
void UART_PutChar(USART_TypeDef* USARTx, uint8_t Data)  
{  
    USART_SendData(USARTx, Data);  
    while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET){}  
}  
void UART_PutStr (USART_TypeDef* USARTx, uint8_t *str)   
{   
    while (0 != *str)   
    {   
        UART_PutChar(USARTx, *str);   
        str++;   
    }   
}

谢谢,我弄好了。printf重新定向没问题。就是c文件编码问题,应该把c文件编码转成ANSI,然后编辑器设置成GB2312,这样中文注释和printf输出中文都正常了

能教教我怎么弄吗?我也出现这种问题

http://jingyan.baidu.com/article/1e5468f9625650484961b73b.html
这么就可以

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top