STM32程序printf打印中文字符到串口出現亂碼解決方法
作者 : 李剴
出處 :
或者
歡迎轉載,但也請保留上面這段聲明。 謝謝! (以上兩個鏈接均是我個人的博客,只是在不同的平台上面)
前言:
相信同我一樣,有一部分同學在寫單片機程序的時候喜歡用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函數的代碼,有什么不懂得可以留言評論,能力有限,如果寫的不足的也麻煩各位指出,可以探討一下
只有心中懷揣着火熱的夢想時,人生才是最美麗的 加油吧!