本文使用 Zhihu On VSCode 创作并发布
为什么需要
- 开发以stm32为底层的ros机器人时常在ubuntu系统下;
- 常用的stm32开发工具在ubuntu下没有版本,或者是版本长时间没更新;
- vscode是常用的代码开发工具,功能丰富,插件众多;
- 网上的教程大同小异,并且时间较早,参考意义较小。
工具
- ubuntu系统
- vscode
- openocd
- stm32cubemx
- stlink/Jlink驱动
- arm-none-eabi-gcc交叉编译工具
软件安装
1.默认电脑是ubuntu系统
2.vscode下载安装
Visual Studio Code(简称VS Code)是一个由微软开发,同时支持Windows 、 Linux和macOS等操作系统的免费代码编辑器,它支持测试,并内置了Git 版本控制功能,同时也具有开发环境功能,例如代码补全(类似于 IntelliSense)、代码片段和代码重构等。该编辑器支持用户个性化配置,例如改变主题颜色、键盘快捷方式等各种属性和参数,同时还在编辑器中内置了扩展程序管理的功能。
3.openocd安装
ubuntu下命令行安装openocd:
# sudo apt-get install openocd
输入openocd --version检验安装是否成功。
![8153f57c0ededc222d542bdfc90dec78.png](https://i-blog.csdnimg.cn/blog_migrate/ee6a0167783646667b50deebe6c69f31.png)
4.stm32cubemx安装
进入stm官网,选择获取软件,填写资料后下载软件。
5.安装stlink驱动
安装依赖包
sudo apt-get install libusb-1.0
sudo apt-get install cmake
sudo apt-get install libgtk-3-dev
下载源码
git clone https://github.com/texane/stlink.git
编译
$ cd stlink
$ make release
$ make debug
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=Debug ..
$ make
$ cd Release; sudo make install;sudo ldconfig
$ cd ../.. (回到stlink目录下)
$ sudo cp etc/udev/rules.d/* /etc/udev/rules.d/
$ udevadm control --reload-rules
$ udevadm trigger
在终端输入st-info --version,会出现类似v1.6.1-115-g8560f93的输出。插入stlink设备后,在终端输入lsusb,可以看到stlink仿真器的类型和厂商。
Bus 001 Device 010: ID 0483:3748 STMicroelectronics ST-LINK/V2
6.arm-none-eabi-gcc交叉编译工具安装
下载相应版本的编译工具后,在终端输入gedit ~/.bashrc,添加工具路径:export PATH="路径/gcc-arm-none-eabi-8-2018-q4-major/bin:$PATH"。终端输入arm-none-eabi-gcc --version查看是否安装正确。
7.stm32-for-vscode插件安装
在vscode中搜索插件stm32-for-vscode并安装。在stm32cubemx中生成makefile工程,vscode中打开,点击ctrl+shift+p调出窗口,搜索build stm32 project命令并执行。
可能出现的问题
1.openocd端口占用的问题
ps -A | grep openocd
kill -9 PID
2.下载编译文件到stm32
st-flash write xxx.bin 0x08000000