Linux+STM32Linux下用CubeMX+VSCode点亮LED(STM32)
Posted SF8086
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux+STM32Linux下用CubeMX+VSCode点亮LED(STM32)相关的知识,希望对你有一定的参考价值。
环境:Ubuntu 18.04
加上调试部分以后文章有些长了,去掉以后写了一篇只讲配环境建工程和下载的。
步骤
安装VSCode、STM32CubeMX、STLink驱动(如果用STLink),参考链接如下:
VSCode
CubeMX
STLink
然后,安装arm-none-eabi-gcc,这里笔者采用新增PPA的方式进行安装。
sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa sudo apt-get update sudo apt-get install gcc-arm-embedded
安装信息中显示所安装的版本为7-2018q2-1~bionic1。
- 然后,按照一般的方法使用Cube新建个点灯的工程(假设我们点PC13上的灯),设置HSE、设置Debug、设置GPIO、配置时钟树......最后在Project Manager页面选择ToolChain为”Makefile“然后生成代码。首次使用某种器件时需要安装对应的库,确认后等待片刻即可。
- 键入
code
打开VSCode,安装插件"C/C++",然后,用VSCode打开Cube生成的工程目录(比如你的工程要是叫”F4_blink“的话Open Folder的时候就选这个)。 VSCode界面下按F1,输入Edit configurations并选择Edit configurations(JSON),然后会打开一个c_cpp_properties.json的文件,默认的内容大概是下面这样的:
{ "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**" ], "defines": [], "compilerPath": "/usr/bin/gcc", "cStandard": "gnu11", "cppStandard": "gnu++14", "intelliSenseMode": "linux-gcc-x64" } ], "version": 4 }
部分条目需要做点改动。打开工程目录下的Makefile文件,把C_INCLUDES的内容搬到inlcudePath下,把C_DEFS的内容搬到defines下。注意,可能需要做些修改,比如原来的内容可能是-ICore/Inc这样格式的,去掉”-I“后参考下面内容的格式写。
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"Core/Inc",
"Drivers/STM32F4xx_HAL_Driver/Inc",
"Drivers/STM32F4xx_HAL_Driver/Inc/Legacy",
"Drivers/CMSIS/Device/ST/STM32F4xx/Include",
"Drivers/CMSIS/Include"
],
"defines": [
"USE_HAL_DRIVER",
"STM32F401xC"
],
"compilerPath": "/usr/bin/arm-none-eabi-gcc",
"cStandard": "gnu11",
"cppStandard": "gnu++14",
"intelliSenseMode": "linux-gcc-x64"
}
],
"version": 4
}
然后,打开Core/Src/main.c,熟练地敲出如下的点灯代码:(并保存)
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13); HAL_Delay(500);
- VSCode中打开终端(TERMINAL,打开默认终端的快捷键为Ctrl + \\`),键入
make
进行编译,结束后会多一个build文件夹,里面有生成的.bin .elf等文件。 插上STLink并接好线,键入
st-info --probe
看能否检测到调试器和连接到的芯片,可以的话就继续键入如下指令:st-flash write ./build/你的目标文件.bin 0x08000000
- 烧录完后复位芯片就能看到灯闪起来了。
- 祝开发顺利!
以上是关于Linux+STM32Linux下用CubeMX+VSCode点亮LED(STM32)的主要内容,如果未能解决你的问题,请参考以下文章
《嵌入式 - STM32开发指南》手把手教你搭建STM32开发环境 [Linux版 - 1]