这篇文章的主要介绍如何跨平台使用vscode开发stm32。原因是最近一段时间主要是工作都在ubuntu上进行的,而之前一些单片机项目还需要修改一些小功能。
对于国内大部分单片机开发者来说,使用的主流编译工具就是iar和mdk,虽然这两款软件都是收费的,但是好像两家公司在国内对于版权维护的并不积极(偶尔会听说mdk会给开发者寄律师函的消息)。stm32还有sw4stm32,trueStudio,stm32cubeIDE,等基于eclipse 的开发工具。对于我来说除了iar和mdk外其他软件做的并不好(个人意见)。
由于不想来回切换系统,只能想办法在ubuntu上开发stm32了,sw4stm32,trueStudio,stm32cubeIDE虽然都是跨平台可我并不喜欢eclipse的 风格。用了一段时间makefile+openocd 感觉还是不错的,就是命令不是太熟悉开发效率比较低。后来发现在vscode上有专门的插件正好解决了我这个问题,果断改用vscode。
vscode上后很多款插件都支持stm32开发,我使用的是cortex-debug。在搭建环境时发现虽然网上教程很多但是有些教程漏洞百出明显就是没有经过实际检验的,而有些教程又实在太老了,这也是我写这个教程的原因。
1.安装软件
vscode :https://code.visualstudio.com/
stm32cubemx(注意不是stm32cubemxIDE):https://www.st.com/content/st_com/zh/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-configurators-and-code-generators/stm32cubemx.html
openocd:http://openocd.org/
编译器:arm-none-eabi-gcc
2. 下载插件
安装:cortex-debug,c/c++,其他插件看个人喜好安装
3. 使用stm32cube生成对应单片机的工程,编译器选择makefile
4.使用vscode 打开工程目录,打开终端执行make命令,生成调试文件
5.调试,点击调试按钮,第一次回弹出提示,让你编辑launch.json文件,
这个主要介绍的executable,这个文件就是刚刚make生成的elf,然后就是interface中swd,根据编译器修改,然后修改对应的configFiles 中的stlink-v2.cfg,和stm32f1x.cfg文件,这两个文件是在openocd的scripts文件夹中找到的。
6,添加xxx.svd文件(其实没什么用),在工程文件夹下添加一个xxx.svd文件,添加的内容
source [find stlink-v2.cfg]
source [find stm32f1x.cfg]
adapter_khz 500
# Make the initial connection and halt the board
init
targets
reset halt
7.大功告成,开始调试
总结:
如果想详细的查看单片机的寄存器,外设状态信息时,还是建议使用iar,mdk这种专业的编译软件。