告别uVision——使用Keil Studio在VSCode中进行STM32的开发
告别uVision——使用Keil Studio在VSCode中进行STM32的开发
Katorly教程懒得看?这里有配置好的项目工程文件,可以直接在vscode中打开来用:https://github.com/katorlys-samples/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的开发。
材料准备
- 符合VSCode安装要求的电脑
- VSCode最新版
- ST-Link驱动
注: 阅读本文,需要您具备VSCode的基本使用方法。您并不需要知道任何与CMake相关的知识。
新建Solution
“Solution”即“解决方案”的意思,可以根据需求把多个程序项目放在一个解决方案内。创建解决方案就相当于创建一个大的项目。
搜索
Keil Studio
,安装Arm Keil Studio Pack
。首次安装完成后vscode右下角会有通知,需要“激活社区版”,这是完全免费的(不过不能拿来商用),点击通知里的“激活”即可。在侧栏中找到
CMSIS
,在SOLUTION
中点击Create a New Solution
,再选择STM32F103C8T6芯片。给解决方案起个名字,并选择路径,直接把这个路径作为整个项目的路径即可(即一个解决方案作为为一个大项目)。路径不能有中文!!!
当你看到这个弹窗的时候,就表明所需的环境包下载完整、解决方案创建成功了。点击
Open
。如果没有创建成功或报错,请移步本文最后一个部分“疑难解答”。在
CMSIS
中的ACTIONS
处点击Build
,看看是否能构建成功,如果不能,请移步本文最后一个部分“疑难解答”。。
完成以上步骤后,解决方案里的项目文件应该是这样的:
配置标准库
本质上,你只需要在Keil Studio的Software Components里面搜索并勾选想要使用的依赖库,构建时Keil Studio会自动下载库、生成CMake文件等。
在侧栏
CMSIS
中的SOLUTION
处找到Manage Software Components
(这个和Keil uVision的Pack Installer其实是一个东西),在搜索框中输入想要安装的组件名称,点击组件名前的复选框即可安装该组件(原理:会把该组件的“包名”添加到你项目的Project.cproject.yml
文件中)。在
ACTIONS
处点击Build
,查看是否能构建成功,如果不能,请移步本文最后一个部分“疑难解答”。
如果要像在Keil uVision里的那样一下子把整个标准库都放入项目中,那么直接在Software Components里面搜索stdperiph
并把上图中的StdPeriph Drivers
全选即可。如果在构建使用标准库的项目时出现“no member named ‘IP’”报错,请移步本文最后一个部分“疑难解答”。
下载与调试
本教程使用ST-Link V2下载器。请先确保您的电脑上安装了相关驱动。
连接好STM32F103C8T6,直接将ST-Link与电脑连接,会看到vscode右下角通知:
点击
OK
,会让你给这个ST-Link命名(仅显示在vscode上),并选择芯片型号。如果错过了这个通知或者没选到,在侧栏中找到Device Manager
并通过如图所示的位置进入编辑即可。在侧栏
CMSIS
的ACTIONS
处点击Run
,待终端显示Flash succeeded
即程序下载成功。请确保在下载之前至少构建过一次,Keil Studio不会在下载的时候帮你构建!点击
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-samples/STM32F103C8T6-VSCode
若您在配置环境的过程中有任何其它问题,欢迎在下方评论区提出,期待与您共同进步!