告别uVision——使用Keil Studio在VSCode中进行STM32的开发

教程懒得看?这里有配置好的项目工程文件,可以直接在vscode中打开来用:https://github.com/katorlys/STM32F103C8T6-VSCode

随着Keil MDK 6的发布,Keil Studio出现在大众视野中。Keil Studio for VS Code是一个包含了多款vscode插件的插件包,将嵌入式开发整合到广泛使用的vscode中,不再需要安装一个额外的IDE,易于云端开发、多人协作、配置更方便、项目更加轻量化。


(图源: Arm announces Keil MDK Version 6)

使用Keil Studio初始化一个项目非常简单。本教程将带您一起从头开始在vscode上配置Keil Studio,以在vscode上使用标准库进行STM32F103C8T6的开发。

材料准备

  1. 符合VSCode安装要求的电脑
  2. VSCode最新版
  3. ST-Link驱动

注: 阅读本文,需要您具备VSCode的基本使用方法。您并不需要知道任何与CMake相关的知识。

新建Solution

“Solution”即“解决方案”的意思,可以根据需求把多个程序项目放在一个解决方案内。创建解决方案就相当于创建一个大的项目。

  1. 搜索Keil Studio,安装Arm Keil Studio Pack。首次安装完成后vscode右下角会有通知,需要“激活社区版”,这是完全免费的(不过不能拿来商用),点击通知里的“激活”即可。

  2. 在侧栏中找到CMSIS,在SOLUTION中点击Create a New Solution,再选择STM32F103C8T6芯片。

  3. 给解决方案起个名字,并选择路径,直接把这个路径作为整个项目的路径即可(即一个解决方案作为为一个大项目)。路径不能有中文!!!

  4. 当你看到这个弹窗的时候,就表明所需的环境包下载完整、解决方案创建成功了。点击Open。如果没有创建成功或报错,请移步本文最后一个部分“疑难解答”。

  5. CMSIS中的ACTIONS处点击Build,看看是否能构建成功,如果不能,请移步本文最后一个部分“疑难解答”。。

完成以上步骤后,解决方案里的项目文件应该是这样的:

配置标准库

本质上,你只需要在Keil Studio的Software Components里面搜索并勾选想要使用的依赖库,构建时Keil Studio会自动下载库、生成CMake文件等。

  1. 在侧栏CMSIS中的SOLUTION处找到Manage Software Components(这个和Keil uVision的Pack Installer其实是一个东西),在搜索框中输入想要安装的组件名称,点击组件名前的复选框即可安装该组件(原理:会把该组件的“包名”添加到你项目的Project.cproject.yml文件中)。

  2. ACTIONS处点击Build,查看是否能构建成功,如果不能,请移步本文最后一个部分“疑难解答”。

如果要像在Keil uVision里的那样一下子把整个标准库都放入项目中,那么直接在Software Components里面搜索stdperiph并把上图中的StdPeriph Drivers全选即可。如果在构建使用标准库的项目时出现“no member named ‘IP’”报错,请移步本文最后一个部分“疑难解答”。

下载与调试

本教程使用ST-Link V2下载器。请先确保您的电脑上安装了相关驱动

  1. 连接好STM32F103C8T6,直接将ST-Link与电脑连接,会看到vscode右下角通知:

  2. 点击OK,会让你给这个ST-Link命名(仅显示在vscode上),并选择芯片型号。如果错过了这个通知或者没选到,在侧栏中找到Device Manager并通过如图所示的位置进入编辑即可。

  3. 在侧栏CMSISACTIONS处点击Run,待终端显示Flash succeeded即程序下载成功。请确保在下载之前至少构建过一次,Keil Studio不会在下载的时候帮你构建!

  4. 点击Debug,可以跟Keil uVision一样调试。

打开已有项目

新建完解决方案,并配置好项目后,以后直接打开解决方案文件夹即可。例如,我把解决方案文件夹路径设为了Project_Keil/stm32f103c8t6 solution,则下次打开项目的时候直接打开stm32f103c8t6 solution文件夹即可。

如果重新打开解决方案后无法构建,请移步本文最后一个部分“疑难解答”。

疑难解答

创建解决方案时报错或解决方案创建完成后构建报错

把VSCode更新至最新版本即可。

若还是不行,请关闭杀毒软件,查看是否是因为杀毒软件把Arm Keil Studio Pack里的插件和他们下载的东西识别为病毒导致的(例如,Kaspersky有可能把csolution.exe识别为病毒而直接删除该文件)

安装了Std Periph Driver中的Framework,misc.c报错

经过对比发现,解决方案生成的的core_cm3.h启动文件中IP写作IPR,要解决misc.c中的IP字段不存在的问题,只需把misc.c中此处的IP改为IPR即可。

重新打开项目/解决方案后无法构建

CMake缓存搞的。在CMSIS中的ACTIONS处点击Build的下拉按钮(按钮内的一个小三角),点击Build (clean)即可清除缓存并构建。

其它问题

Keil MDK 6是最近几个月才发布的,尽管已经最大程度地简化了从0开始配置环境的复杂度,但配置起来可能并不顺手。

奉上在vscode中配置好的STM32F103C8T6标准库项目工程模板,供您参考:https://github.com/katorlys/STM32F103C8T6-VSCode

若您在配置环境的过程中有任何其它问题,欢迎在下方评论区提出,期待与您共同进步!