STM32程序中使用printf打印中文字符亂碼

STM32程序printf打印中文字符到串口出現亂碼解決方法


作者 : 李剴
出處 :

https://blog.csdn.net/Kevin_8_Lee/

或者

https://www.cnblogs.com/kevin-nancy/

歡迎轉載,但也請保留上面這段聲明。 謝謝! (以上兩個鏈接均是我個人的博客,只是在不同的平臺上面)


前言:

相信同我一樣,有一部分同學在寫單片機程序的時候喜歡用printf打印相關信息到串口,然後在串口調試助手看數據變化。

但是我之前在使用printf去打印中文字符的時候,出現了亂碼,這種問題以前也碰到過,只是沒去深究爲什麼,往往都是重新建工程,寫代碼。 但是時隔很久,又再次碰到這個問題,就想好好把這個問題修改完,


我是使用的IAR平臺,使用的keil的小夥伴也可以用這個方法解決,都是一樣的。

1、首先看一下錯誤。串口打印中文,串口助手出現亂碼。經檢查不是波特率的問題

在這裏插入圖片描述

因爲每次用CubeMX配置完之後生成代碼,IAR都是以默認編碼UTF-8編碼的,所以導致了中文亂碼,如果設置成系統設置,也會亂碼,錯誤設置如下(同樣,keil也有可能是這樣的情況跟,可以嘗試用類似的方法解決)

在這裏插入圖片描述

只要改成GB2312中文編碼即可,但是這裏改正之後編譯下載,並不行,因爲還是utf-8,

可以看到右下角還是utf-8

需要重啓一下IAR軟件

如果重啓不可以,就用記事本或者你們個人使用的查看代碼的軟件打開src文件夾裏面的main.c 然後另存爲GB2312編碼格式的

我用的是VScode,直接另存就可以了,之喲啊保存爲GB2312或者GBK編碼格式就可以,然後打開IAR或者keil工程
注: 其他編輯器例如sublime,記事本,notepad++,sourceinsight等等,都可以做的
在這裏插入圖片描述
這裏提示的是中文編碼就可以了

關於如何使用printf,可以參考我的另一篇博客—>>> 關於重定向printf出錯 Error[Pe020]: identifier “FILE” is undefined 解決方案,裏面有重定向printf函數的代碼,有什麼不懂得可以留言評論,能力有限,如果寫的不足的也麻煩各位指出,可以探討一下

只有心中懷揣着火熱的夢想時,人生纔是最美麗的 加油吧!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章