STM32CubeMX、MDK(Keil MDK)、git、vscode等工具中统一编码设置(UTF-8),确保中文支持,避免乱码问题

STM32CubeMX、MDK(Keil MDK)、git、vscode等工具中统一编码设置(UTF-8),确保中文支持,避免乱码问题


STM32CubeMX、MDK(Keil MDK)、git、vscode等工具中统一编码设置(UTF-8),确保中文支持,避免乱码问题

核心需求:我们希望在这些工具中统一编码设置,确保中文支持,避免乱码问题。这通常涉及到设置文件编码为UTF-8,以及配置编辑器、编译器等。

为了在STM32开发环境中统一编码并支持中文,需要分别配置STM32CubeMX、Keil MDK、Source Insight和Git。以下是各工具的详细设置方法:

一、STM32CubeMX 编码设置

核心目标:强制生成UTF-8编码的源代码文件,避免中文注释乱码。

配置步骤:

  1. 找到STM32CubeMX安装目录下的STM32CubeMX.l4j.ini文件(通常位于 C:\Program Files\STMicroelectronics\STM32Cube\STM32CubeMX)。
  2. 在文件末尾的部分添加以下参数
bash 复制代码
-Dfile.encoding=UTF-8
-Duser.language=zh
-Duser.region=CN
  1. 保存文件并重启STM32CubeMX。

  2. 验证:生成工程后,用文本编辑器(如Notepad++)打开 main.c,确认编码为UTF-8。


二、Keil MDK 编码设置

核心目标:确保编辑器正确显示和保存UTF-8编码的中文。

配置步骤:

  1. 打开Keil MDK,进入 Edit→ Configuration→ Editor选项卡。

  2. 在 Encoding下拉菜单中选择:

  • 推荐:UTF-8

  • 或 Chinese GB2312(Simplified)(纯中文环境)

  1. 勾选 Use Unicode Byte Order Mark(自动添加BOM头)。

  2. 字体设置(确保中文显示正常)

  • 点击 Font...按钮,选择支持中文的字体(如 Microsoft YaHei、SimSun)。

  • 字符集选择 CHINESE_CHARSET。

5. 系统区域设置(Windows,慎重处理,建议不要修改):

  • 打开"控制面板" → "区域" → "管理" → "更改系统区域设置"。

  • 选择"中文(简体,中国)",取消勾选"Beta版:使用Unicode UTF-8提供全球语言支持"。

  • 重启电脑生效。

**注意:**对于已有乱码文件,可使用 File→ Open With Encoding...选择正确编码重新加载。

三、Git 编码设置

核心目标:确保Git命令行和日志正确显示中文文件名和内容。

配置步骤(在Git Bash中执行):

  1. 设置全局编码参数:
bash 复制代码
git config --global core.quotepath false        # 直接显示中文文件名
git config --global i18n.commitEncoding utf-8   # 提交信息编码
git config --global i18n.logOutputEncoding utf-8 # 日志输出编码
git config --global gui.encoding utf-8          # 图形界面编码
  1. 终端编码设置:
  • 右键Git Bash窗口标题栏,选择 Options→ Text。

  • 将 Character set设置为 UTF-8,保存并重启终端。

  1. 解决 git log乱码:
bash 复制代码
export LESSCHARSET=utf-8  # 确保分页器支持UTF-8
  1. Windows换行符设置(推荐):
bash 复制代码
git config --global core.autocrlf true  # 提交时CRLF转LF,检出时LF转CRLF

四、VS Code设置UTF-8编码

五、统一工作流建议

源头控制:在STM32CubeMX中强制生成UTF-8编码的源文件。

IDE统一:Keil MDK和VS Code均设置为UTF-8编码。

版本控制:Git配置为全程UTF-8,避免文件名和日志乱码。

团队协作:将上述配置写入团队文档,并使用 .gitattributes文件统一换行符和编码:

bash 复制代码
* text=auto
*.c text charset=utf-8
*.h text charset=utf-8

按照以上步骤配置后,四个工具将统一使用UTF-8编码,彻底解决中文乱码问题,并确保团队协作的一致性。

MDK编码格式为UTF-8,stm32的printf中文输出到串口调试软件,中文显示乱码

原因分析:

MDK编码为UTF-8,所以源代码中的中文字符串是UTF-8编码。当程序通过printf输出到串口时,发送的是UTF-8编码的字节流。串口调试软件如果以错误的编码(比如GB2312)显示,就会看到乱码。因此,我们需要将串口调试软件的显示编码设置为UTF-8。

sscom5.13.1.exe 不支持编码设置,默认系统ANSI编码(中文编码为GBK),所以无法修改。

以下以常见的串口调试软件为例,说明如何设置:

SecureCRT:

  • 打开会话选项(Session Options)。

  • 在终端(Terminal)设置中,找到外观(Appearance)下的字符编码(Character encoding)。

  • 将编码设置为"UTF-8"。

Xshell:

  • 打开会话属性(Session Properties)。

  • 在终端(Terminal)设置中,找到编码(Encoding)。

  • 选择"UTF-8"。

Putty:

  • 在连接设置中,找到窗口(Window)下的转换(Translation)。

  • 在"接收数据的字符集"(Received data assumed to be in which character set)中选择"UTF-8"。

MobaXterm:

  • 打开会话设置(Session Settings)。

  • 在终端设置(Terminal settings)中,找到终端字体(Terminal font)下的编码(Encoding)。

  • 选择"UTF-8"。

串口调试助手(如SSCOM、AccessPort等):

很多国产串口调试助手默认使用GB2312编码。如果软件支持设置显示编码,请将其设置为UTF-8。

但是在SSCOM5.13.1中,不支持编码选择"UTF-8"。

如果串口调试软件不支持UTF-8编码:

可以考虑更换支持UTF-8的串口调试软件。

或者,在代码中将UTF-8字符串转换为GB2312再发送(不是我们期望的)。

相关推荐
无限进步_2 小时前
21. 合并两个有序链表 - 题解与详细分析
c语言·开发语言·数据结构·git·链表·github·visual studio
一路往蓝-Anbo2 小时前
第 12 章:Linux 侧 RPMsg 用户态驱动与数据接口
linux·运维·服务器·stm32·单片机·嵌入式硬件·网络协议
The️2 小时前
STM32-FreeRTOS操作系统-软件定时器
arm开发·stm32·单片机·嵌入式硬件·mcu·c#
炸膛坦客3 小时前
FreeRTOS 学习:(二十八)任务调度器 + 启动第一个任务(了解)
stm32·单片机·操作系统·freertos
炸膛坦客6 小时前
FreeRTOS 学习:(二十七)死等延时函数会对任务调度产生什么影响
stm32·操作系统·freertos
2501_918126918 小时前
野火stm32怎么玩
stm32·单片机·生活·个人开发
2501_918126918 小时前
stm32能做次声波检测器吗?
c语言·stm32·单片机·嵌入式硬件·学习
宫瑾9 小时前
VSCode使用C/C++ extensions开发STM32,添加头文件路径
c语言·c++·vscode
LCG元10 小时前
多电机同步控制:STM32F7+CAN总线,工业纺纱机应用实战
stm32·单片机·嵌入式硬件