0%

Linux下STM32开发

参考自http://panqiincs.me/2019/07/26/develop-stm32-on-linux/

由于我是在Deepin下进行配置的, 所以和原教程有所差别

同时采用的编辑器是vim, 而不是VSC

GNU Toolchain

由于原教程的系统为Manjaro Linux, 使用pacman安装工具链, 但我在apt下找不到该工具链, 只好到官网下载

一共有三个包需要下载:

第一个包, 将其解压到自己想要目录下就好了
然后设定环境变量
~/.bashrc中加入:

1
export PATH=$PATH:/home/didong/gcc-arm-none-eabi-9-2019-q4-major/bin

注意将其中的/home/didong换成你的路径

第二个和第三个库
直接分别在库的根目录下执行:

1
2
3
./configure
make
make install

我安装的时候, 中途有碰到过ERROR, 但是根据错误提示去做就好了, 但一定要确保最后没有ERROR

STM32CubeMX

这里的安装和工程代码生成基本同原教程一样, 但要注意安装的时候不仅仅需要.linux文件, .exe文件也需要

VIM

原教程采用的是VSCode, 配置起来应该会比较简单

但习惯了vim, 还是用vim吧

最主要的问题是代码的补全, 我一直使用的是Youcompleteme来进行补全, 所以这里说一下YCM的配置, YCM的安装和基础配置可以参考YouCompleteMe 安装配置使用(写得比较简略, 主要是参考别人的)

打开.ycm_extra_conf.py文件
flags数组中加入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
'-DUSE_HAL_DRIVER',
'-DSTM32F103xB',
'-I',
'Inc',
'-I',
'Drivers/STM32F1xx_HAL_Driver/Inc',
'-I',
'Drivers/STM32F1xx_HAL_Driver/Inc/Legacy',
'-I',
'Drivers/CMSIS/Device/ST/STM32F1xx/Include',
'-I',
'Drivers/CMSIS/Include',
'-isystem',
'/home/didong/gcc-arm-none-eabi-9-2019-q4-major/arm-none-eabi/include'
'-isystem',
'/home/didong/gcc-arm-none-eabi-9-2019-q4-major/arm-none-eabi/include/c++/9.2.1',
'-isystem',
'/home/didong/gcc-arm-none-eabi-9-2019-q4-major/arm-none-eabi/include/c++/9.2.1/backward',
'-isystem',
'/home/didong/gcc-arm-none-eabi-9-2019-q4-major/lib/gcc/arm-none-eabi/9.2.1/include'
'-isystem',
'/home/didong/gcc-arm-none-eabi-9-2019-q4-major/lib/gcc/arm-none-eabi/9.2.1/include-fixed'

注意:
上面代码的1, 2行其实就是原教程中的C_DEFS
后面的是C_INCLUDES
要把路径换成自己的

每次生成工程后, 需要在工程根目录下执行:

1
2
cp {你的.ycm_extra_conf.py文件的路径} .
ctags -R

最后, 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

使用UART时的跳线

串口调试助手

使用arduino的串口调试助手

网络调试助手

使用http://blog.chinaunix.net/uid-21977056-id-4310527.html

Thank you for your reward !