参考自http://panqiincs.me/2019/07/26/develop-stm32-on-linux/
由于我是在Deepin下进行配置的, 所以和原教程有所差别
同时采用的编辑器是vim, 而不是VSC
GNU Toolchain
由于原教程的系统为Manjaro Linux, 使用pacman安装工具链, 但我在apt下找不到该工具链, 只好到官网下载
一共有三个包需要下载:
- gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux.tar.bz2
- git://sourceware.org/git/binutils-gdb.git
- git://sourceware.org/git/newlib-cygwin.git
后两个需要使用git clone
第一个包, 将其解压到自己想要目录下就好了
然后设定环境变量
在~/.bashrc
中加入:
1 | export PATH=$PATH:/home/didong/gcc-arm-none-eabi-9-2019-q4-major/bin |
注意将其中的
/home/didong
换成你的路径
第二个和第三个库
直接分别在库的根目录下执行:
1 | ./configure |
我安装的时候, 中途有碰到过ERROR, 但是根据错误提示去做就好了, 但一定要确保最后没有ERROR
STM32CubeMX
这里的安装和工程代码生成基本同原教程一样, 但要注意安装的时候不仅仅需要.linux
文件, .exe
文件也需要
VIM
原教程采用的是VSCode, 配置起来应该会比较简单
但习惯了vim, 还是用vim吧
最主要的问题是代码的补全, 我一直使用的是Youcompleteme来进行补全, 所以这里说一下YCM的配置, YCM的安装和基础配置可以参考YouCompleteMe 安装配置使用(写得比较简略, 主要是参考别人的)
打开
.ycm_extra_conf.py
文件
在flags
数组中加入
1 | '-DUSE_HAL_DRIVER', |
注意:
上面代码的1, 2行其实就是原教程中的C_DEFS
后面的是C_INCLUDES
要把路径换成自己的
每次生成工程后, 需要在工程根目录下执行:
1 | cp {你的.ycm_extra_conf.py文件的路径} . |
最后,
make
就可以了, 会生成build/
目录, 同时该目录下会有一个.bin
文件
事实上, 这一部分完全可以使用VSCode, 或者其他工具, 比如STM32CubeIDE(其中集成了STM32CubeMX), 关于STM32Cube生态系统可以看https://www.st.com/content/st_com/zh/stm32cube-ecosystem.html#DataTables_Table_0
STM32CubeProgrammer
原教程使用的是stm32flash, 我这里使用的是STM32CubeProgrammer, 一种编程工具
它通过多种多样可用的通信媒介(JTAG、SWD、UART、USB DFU、I2C、SPI、CAN等)为读取、写入和验证设备和外部存储器等操作提供简单易用且高效的环境
参考https://www.st.com/en/development-tools/stm32cubeprog.html
简而言之, 就是多种工具的集合, 这比单一的工具要方便多了
安装过程同STM32CubeMX
注意几点:
使用UART时, 要注意跳线, 同时还要reset后再connect(不同的板子可能不同, 我这里是STM32F103C8T6)
使用ST-Link, 需要升级固件, 当出现st-link is not in the dfu mode. please restart it.
提示时, 不要关闭窗口, 将ST-Link拔下再插上, 然后就可以了
使用ST-Link时, 每次下载完程序后, 都需要再次拔下然后插上, 然后connect
串口调试助手
使用arduino的串口调试助手