打印
[应用相关]

STM32用printf串口输出中文乱码

[复制链接]
5089|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Rollo|  楼主 | 2017-6-30 16:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
波特率没设置错,据说是keil的编码问题,但设置成GB2312还是乱码。main.c文件之前在写注释的时候乱码,用文本编辑器从ANSI转成UTF-8了,现在串口输出中文又乱码。文本编辑器又转不了GB2312。
沙发
Rangar| | 2017-6-30 16:41 | 只看该作者
试试这个,打开你keil的EDIT下拉菜单,最下面有一个configuration,点击它,在editor选项里有一个encoding,这里选择   GB2312

使用特权

评论回复
板凳
Stannis| | 2017-6-30 16:43 | 只看该作者
没理解了是printf输出的是乱码  还是.c文件中的中文是乱码

使用特权

评论回复
地板
Brand2| | 2017-6-30 17:00 | 只看该作者
正常使用printf要么勾选 usemicrolib选项  要么自己比如说  网上提供的方法   自己做个函数然后再用printf

使用特权

评论回复
5
Soraka| | 2017-6-30 17:11 | 只看该作者
要设置成2312编码之后才能复制粘贴文本到keil中不出现乱码

使用特权

评论回复
6
Garen2| | 2017-6-30 17:21 | 只看该作者
我用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++;   
    }   
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

115

主题

730

帖子

1

粉丝