目录
文章目录
1、前言
在日常学习中,使用keil编写stm32的程序太正常不过,但是keil的自动补全非常的差劲,不仅效果不好还经常死机,如果你想要更好的代码编写体验,希望本文能给大家提供一些帮助。CLion为收费软件,其余的都是免费的,CLion是我认为在除了windows环境下体验最好的IDE了,Stm32CubeMX是stm32hal库的自动代码生成工具,能极大的节约项目的底层代码编写时间。windows安装步骤差不多,但是编译器安装比较繁琐,所以在ubuntu下安装比较方便。
2、软件环境
Ubuntu 16.04Lts
Stm32CubeMX 4.27
CLion 2019.2
OpenOCD 0.10.0
arm-none-eabi-gcc 9-2019-q4
2.1、openocd配置相关
官方git地址:git://git.code.sf.net/p/openocd/code(实在慢,不是一般的慢)
官方git镜像地址:git://repo.or.cz/openocd.git(推荐)
csdn下载:https://download.youkuaiyun.com/download/dielaoji0733/12043524
最简单的安装方式是apt安装:
sudo apt install openocd
这个版本比较老很多新的器件不支持,比如stm32h7,推荐源码安装。
#先安装依赖
sudo apt install build-essential pkg-config autoconf automake libtool libusb-dev libusb-1.0-0-dev libhidapi-dev
sudo apt install libtool libsysfs-dev
#编译安装
cd openocd
sudo ./bootstrap
sudo ./configure
sudo make
sudo make install
测试安装是否成功
openocd --version
2.2、arm-none-eabi-gcc
直接apt安装没有什么问题,但是版本比较老,推荐源码安装。
#apt安装
sudo apt install gcc-arm-none-eabi
官方下载地址:https://links.jianshu.com/go?to=https%3A%2F%2Fdeveloper.arm.com%2Ftools-and-software%2Fopen-source-software%2Fdeveloper-tools%2Fgnu-toolchain%2Fgnu-rm%2Fdownloads
csdn:https://download.youkuaiyun.com/download/dielaoji0733/12043555
#解压包放到任何路径下即可
vim /etc/profile #最后添加以下环境变量,记得改路径
export PATH=$PATH:/usr/local/gcc-arm-none-eabi-9-2019-q4-major/bin
重启计算机,验证安装成功
arm-none-eabi-gcc -v
2.3、Stm32CubeMX
官方网址:https://www.st.com/en/development-tools/stm32cubemx.html
先安装jre环境
sudo apt install default-jre
下载zip包,stm32cubemx 5.0以上版本解压后直接双击.linux文件安装即可。本人不喜欢5.0以上的界面,故安装4.27版本。由于需要32位系统支持,所以安装i386支持
sudo apt install libc6-i386
2.4、配置系统
2.4.1、删除无用的配置文件
为了使用方便,可以把其他的板子的配置文件都删了。
sudo rm -r /usr/local/share/openocd/scripts/board/*
2.4.2、编写烧录配置文件
新建一个文件,名字随便起
sudo vim /usr/local/share/openocd/scripts/board/stm32h7xx.cfg
#写入以下内容
source [find interface/stlink-v2.cfg] #仿真器配置文件
source [find target/stm32h7x.cfg] #目标芯片配置文件
其他型号的仿真器和芯片的配置文件到以下目录找,将上面的内容修改成对应的文件名即可。
/usr/local/share/openocd/scripts/interface #仿真器
/usr/local/share/openocd/scripts/target #芯片
2.4.3、 修改usb权限
使用lsusb命令查看usb设备,本人的stlink设备如下
Bus 003 Device 005: ID 0483:3748 STMicroelectronics ST-LINK/V2
新建一个文件,以增加对usb设备的访问权限
sudo vim /etc/udev/rules.d/stlink.rules #文件名随意,以.rules结尾
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3748", GROUP="users", MODE="0666"
重启电脑
2.5、CLion配置相关
2.5.1、软件安装
clion官方下载地址:https://www.jetbrains.com/clion/download/other.html
汉化包地址(不想用中文可以不装):https://github.com/pingfangx/jetbrains-in-chinese
这里使用一个插件来支持stm32,File->Settings->Plugins,搜索openocd,点击install安装。
2.5.2、新建工程
直接用stm32cubemx生成指定的工程文件,ide选择SW4STM32(重要)。生成完成后直接用CLion打开该文件夹即可。
2.5.3、配置软件
路径为对应的可执行程序路径,点test测试路径是否正确。
选择烧录配置文件。
直接点运行就可以烧录了。
3、坑汇总
3.1、Error: init mode failed (unable to connect to the target)
- 检查线是否连接正确,电源,仿真器是否工作正常
- 之前的工程,没有预留debug引脚,程序烧录不进去,遇到这个问题可以使用stm32cubemx生成一个新的工程,sys-debug选择Serial Wire,把boot0和boot1接到vcc上,复位一次,这时应该可以正常烧录,把该工程烧录进去,boot0和boot1接回到gnd,再复位一次。如果还不能烧录下电重新再试。切记以后生成工程时一定要开启Debug,否则下一次无法烧录。
3.2、Error: libusb_open() failed with LIBUSB_ERROR_ACCESS
usb打开失败,可能是没有权限,确认2.4.3步骤是否正确执行。