在ubuntu的apt
源里面是还没有添加arm-none-eabi-gdb
,所以需要自己手动安装,下面是一个博主的百度云链接:
安装gdb-arm-none-eabi
密码:o59s
sudo apt-get install gcc-arm-none-eabi
sudo dpkg -i libreadline6_6.3-8ubuntu2_amd64.deb
sudo dpkg -i gdb-arm-none-eabi_7.10-1ubuntu3+9_amd64.deb
sudo apt install libstdc++-arm-none-eabi-newlib
arm-none-eabi-newlib
是嵌入式平台下的C语言标准函数库,如果不安装可能会产生编译错误。
因为现在官网的固件库已经停止更新了,官网推荐使用STM32CubeMX,经过几次的使用过后,给我的感觉就是,太香了!!所有的配置只需要点一点鼠标就好了,不再像之前的固件库需要自己从头开始搭建工程。由于STM32CubeMX是依赖Java环境的,所以需要安装其环境jre
:
sudo apt install openjdk-8-jre
在官网下载STM32CubeMX,然后下载下来的压缩包:en.stm32cubemx_v6-1-0.zip
,解压后是这样的:
修改linux的权限:
chmod 777 SetupSTM32CubeMX-6.1.0.linux #修改权限
sudo ./SetupSTM32CubeMX-6.1.0.linux #运行软件安装包
然后,我把安装路径设置在了usr/local/STMicroelectronics/STM32Cube/STM32CubeMX
下面,所以软件也是在那下面,每次打开极为不便,所以我创建了一个软链接到桌面:
ln -s /usr/local/STMicroelectronics/STM32Cube/STM32CubeMX/STM32CubeMX ~/桌面
这不就安装好了吗!hiahia~
但是因为我哪里出错了,出现了权限问题,所以只能用root权限去运行CubeMX,这个问题以后再解决了。
到这里假设你会用CubeMX生成makefile,这时候打开Vscode是这样的:
会有很多的红线,这是因为你没有添加includepath和define宏,所以现在要做的是,修改c_cpp_properties.json
文件
首先Ctrl+Shift+P
:
选择C/C++编辑配置, 然后就会在.vscode下面生成c_cpp_properties.json
,这时候将Makefile中C_INCLUDES和C_DEFS的内容添加到includePath和defines中。编译器的头文件目录也要添加到includePath中。修改后的配置文件如下:
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"${workspaceFolder}/Core/Inc",
"${workspaceFolder}/Drivers/STM32F1xx_HAL_Driver/Inc",
"${workspaceFolder}/Drivers/STM32F1xx_HAL_Driver/Inc/Legacy",
"${workspaceFolder}/Drivers/CMSIS/Device/ST/STM32F1xx/Include",
"${workspaceFolder}/Drivers/CMSIS/Include",
"${workspaceFolder}/Drivers/CMSIS/Include"
],
"defines": [
"USE_HAL_DRIVER",
"STM32F103xB"
],
"compilerPath": "/usr/bin/clang",
"cStandard": "c11",
"cppStandard": "c++14",
"intelliSenseMode": "clang-x64"
}
],
"version": 4
}
现在就可以构建工程了,在项目的根目录下直接运行make
命令,编译链接完成后,工程根目录下会多出一个build/
目录,里面有我们需要的*.bin
文件:
最后将二进制文件烧写到芯片中。一般来说,用JLink是最方便的,不仅可以烧写软件还能够进行硬件调试。但是对于没有Jlink的我来说,现在只有一根可以供电和烧写软件的USB转串口线,所以这个stm32flash的烧写软件就有用场了。stm32flash需要自己下载源码后编译安装:
git clone https://hub.fastgit.org/stm32duino/stm32flash
cd stm32flash/
make
sudo make install
用跳线帽将板子的BOOT0引脚接3.3V,BOOT1引脚接地,用USB转串口线将板子和电脑连接,然后上电。假设你的电脑有CH340芯片的驱动,上电后多了一个名为/dev/ttyUSB0的设备。可以用stm32flash查看串口的信息:
sudo stm32flash /dev/ttyUSB0
一切正常,然后用下面的命令将编译生成的二进制文件烧写入芯片中:
sudo stm32flash -w *.bin -v -g 0x00 /dev/ttyUSB0
参考:使用 VSCode 打造 STM32 开发环境