前言     

        通过长时间使用 keil ,发现它在代码编辑方面有些不方便,处于一种“能用”的状态。最近,我准备尝试用 vscode 进行代码编辑,因为它具有更好的代码补全、文件编码控制,甚至可以接入AI,所以我觉得未来总有一天会用 vscode 进行嵌入式开发。由于第一次深入接触 vscode,而且采用的是" vscode 编程,keil 调试"的联调方案,使用过程中不可避免遇到一些奇怪问题。这里写文章进行记录,方便后续查阅。

        本文章主要介绍" vscode 编程,keil 调试"的联调方案下的具体工作流,方便自己在其他设备上移植经验。

        新工程从 小节1 开始,旧工程从 小节2 开始。

1、生成基本配置代码

        stm32cubemx 设置各基础配置,确定配置完成后,如下图进行设置:

        注意红圈处保持一致。确定红圈没问题后,生成代码。

2、检查文件编码

        notepad-- 检查工程的文件编码,我习惯统一为 UTF-8 编码。步骤如下:

        注意,在旧的工程中,对于自定义添加的文件,notepad-- 可能无法识别到,如果在代码编辑器中发现该文件中文乱码,则需要 notepad-- 单独打开该文件并转换文件编码。

3、编写工程

3.1、添加文件和 group

        关闭vscode,使用 keil 打开工程,在 keil 中添加文件和 group。完成修改后,记得先编译工程,再点击全部保存,保存好所有修改。

3.2、写代码和初编译

        使用 vscode 启动新窗口,打开工程,步骤如下:

        到此,vscode 成功打开工程,可以修改代码。修改代码完成后,点击下图红圈进行初编译,查看是否有语法错误。

3.3、工程内查找代码或字词

        按照下图进行设置。位置①是要查找的字符,点击位置②后才能出现位置③,位置③设置查找条件。注意位置③右侧图标没有高亮,否则查找范围只有 vscode 编辑器已经打开的文件(如下图的 main.c )。

         位置③中,一般我只写 .c 和 .h 文件,所以设置“*.c, *.h”。紧接着是查找范围,这里设置为本工程所在路径,可以从下图中复制,点击红圈内右侧空白处即可复制路径:

3.4、正式编译、下载、调试

        工程编辑完成后,打开 keil ,在下图中,点击是。这里是重新加载所有的已经修改的代码文件。之后在 keil 中正常编译、下载与调试。

4、部分问题总结

4.1、open project: 'xxx.uvprojx' failed !, msg: Cannot read properties of undefined (reading 'replace')

cubemx生成工程后,先只用 keil 打开工程并编译,编译完成后再打开 vscode 新窗口,按照 3.2 小节打开工程,即可避免此错误。

vscode 新窗口打开步骤如下:

win + Q 搜索 vscode ,在右侧点击“新窗口”。

4.2、文件编码

        配置代码以及工程是通过 cubemx 生成的,cubemx 默认 UTF-8 格式,vscode 读写文件也是默认采用 UTF-8 格式。

        唯一注意的地方是,当使用 keil 调试时,注意查看 keil 编辑器的文件编码设置必须为 UTF-8 without signature。这样既可以保证 keil 编辑器代码注释不出现乱码,又可以保证调试过程中 keil 编辑器修改代码后,文件依然是 UTF-8 格式。

4.3、文件读写权限——是否只读

        当查看历史工程时,就需要设置文件为只读,防止意外修改代码。目前我没有找到 vscode 设置工程级别的文件只读权限。

        方式一是,通过 vscode 设置单个文件的只读权限。也就是,编辑区打开一个文件,就运行一次 vscode 指令,设置当前文件在当前 vscode 窗口中只读。

        方式二是,修改 vscode 相关文件,将工程里所有文件设置为只读,但这种方式过于繁琐。

        方式三是,控制代码版本。通过代码版本控制工具或手动将需要查看的工程复制副本,在副本中进行查看。

        我的最终实践是,方式一和方式三结合使用。

end

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐