赞
踩
Visual Studio Code的安装和使用参考Linux下使用VSCode和CMake搭载C/C++开发环境
插件安装:
可以去ST官网直接下载
选择STM32Cube init code generator for Linux,下载完后直接右键打开安装
打开终端直接安装就好,这样还能自动安装其他依赖包
sudo apt install openocd
成功安装完后可以看到openOCD版本号,连接上烧录器用lsusb
命令可以看到相关信息
GNU Toolchain for Arm processors
Open source GNU tools for Arm processors: GCC, GDB, binutils, and libraries
下载完后首先解压到合适的位置,我这里解压到了/opt
ls看看里边的内容
然后把编译器路径添加到环境变量:
方法一(进当前用户生效):
cd ~
vi .bashrc
#打开.bashrc后把下面这句添加到最后面
export PATH=$PATH:/opt/gcc-arm-none-eabi-10-2020-q4-major/bin
#保存退出后需要使环境变量生效:
source .bashrc
方法二(所有用户生效):
sudo vi /etc/profile
#打开/etc/profile后把下面这句添加到最后面
export PATH=$PATH:/opt/gcc-arm-none-eabi-10-2020-q4-major/bin
#保存退出后需要重启使环境变量生效:
reboot
一切顺利的话,可以查到编译器的版本号
生成工程的方法可以参考STM32CubeMX系列教程
这里需要注意两点:
一是SYS
里Debug
要选择合适的接口配置,二是要选择生成Makefile
文件
用VSCode打开工程目录,发现已经有Makefile
文件了,而且打开main.c后一堆红色报错,虽然这里的报错并不影响你正常编译,但是强迫症实在难受,解决办法如下:
按下快捷键Ctrl+Shift+p
,输入C/C++然后点击Edit Configurrations(JSON)
输入以下内容,对应的是MDK配置里的宏定义,需要根据你的工程来填写
保存后关闭所有文件,重新打开main.c,没有报错了强迫症十分满足,接着愉快编写点灯测试代码。
写完测试代码,按快捷键Ctrl+Shift+`打开VSCode内置终端,输入make命令回车开始编译
成功编译后会提示生成了elf,hex,和bin文件
首先烧录器连上STM32并打开电源,另外单独打开一个终端,输入以下指令
openocd -f interface/stlink-v2.cfg -f target/stm32f4x.cfg
/usr/share/openocd/scripts/interface
/usr/share/openocd/scripts/target
烧录器成功连接上后回到VSCode刚才的内置终端,分别输入
telnet localhost 4444
通过telnet连接openocdprogram /home/lps/stm32/test01/build/test01.hex
烧录hex文件reset
复位STM32exit
关闭连接
此时可以看到STM32板子LED在闪烁
创建json脚本,创建方法还是参考Linux下使用VSCode和CMake搭载C/C++开发环境
只需注意launch.json要选择Cortex Debug
{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "Cortex Debug", "cwd": "${workspaceRoot}", "executable": "./build/test01.elf", "request": "launch", "type": "cortex-debug", "servertype": "openocd", "configFiles": [ "interface/stlink-v2.cfg", "target/stm32f4x.cfg" ], "armToolchainPath": "/opt/gcc-arm-none-eabi-10-2020-q4-major/bin", "svdFile": "STM32F427x.svd", "preLaunchTask": "Build" } ] }
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "Build",
"type": "shell",
"command": "make"
}
]
}
.svd文件能在调试的时候方便看到各个外设的状态,在之前Windows下MDK和EWARM安装目录里都可以找到
MDK514/ARM/Pack/Keil/STM32F4xx_DFP/2.9.0/CMSIS/SVD/*.svd
EWARM7.5/arm/config/debugger/ST/*.svd
选择自己芯片的svd文件拷贝工程主目录
如果添加完这几个文件发现有小红点报错,重新打开VSCode即可,最终的文件目录如下
开始前把前面连接openocd的终端全都关掉,在main函数最开头打一个断点,修改一下延时时间(为了验证工程是否能重新编译和烧录)
按F5,发现工程自动编译,烧录并且进入调试状态,最终停在了startup_stm32f427xx.s开头,跟在MDK里调试一样,继续按F5就运行到了在main函数里打的断点。
调试界面打开CORTEX_PERIPHERALS
能看到各个外设的状态
此文最终实现了STM32CubeMX自动生成Makefile和工程框架代码,然后在VSCode里继续完成编辑,烧录和调试,适用于在Linux下新建工程开发STM32,openocd还支持各种烧录器,包括且不仅限于stlink和jlink。
如果不想用STM32CubeMX生成的库,想用旧的标准外设库或者想编译以前写好的工程代码,那就需要用CMake来生成makefile,参考:
Linux下使用VSCode,GCC,OpenOCD实现STM32一键编译烧录调试(CMake篇)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。