(在Windows10操作系统上,基于STM32CubeMX arm-gcc和Openocd)
本人硬件开发为主,纯属野生程序员,自学51,STM8,STM32,S32K感觉一直断断续续从没入门,在写这篇稿子之前其实也是在同事的指导下用GCC开发STM32.简单来讲就是将HAL库按固定的文件架构移植到GCC,因为自己不会编写MakeFile,都是拷贝大师的MakeFile文件,按指导做小修改,一步一步添加路径,编辑器采用的是Source Insight。
其实整体来看跟今天写的主题是一样的,看到Visual Studio Code众多插件的完美代码补全,语法高亮等等,也决定记录一篇面向像我这样的小白零基础教程,过程参考很多网上资源,纯属记录过程笔记。如有不对的地方还请各位多多指点
一:软件准备
所需要的软件有:
MinGW64
直接下载解压至C盘根目录即可
MinGW64百度网盘地址:MinGW64
提取码:5894
openocd
(开源片上调试器:Open On-Chip Debugger)
openocd百度网盘地址:openocd
提取码:5896
GNU_Tool_Arm_Embedded(arm-none-eabi)
arm-none-eabi百度网盘地址:arm-none-eabi
提取码:5895
备注:以上三款软件下载解压到C盘根目录即可,把这个bin文件夹的目录添加到环境变量并点击确定保存
Visual Studio Code
(下载与安装很简单只需要注意安装过程下图选中即可)
STM32CubeMX
(这里就不写安装方法了,在网上找一找教程)
验证软件是否安装成功
桌面空白处按住Shift 键+鼠标右键,在右键窗口中打开PowerShell窗口,左击确定打开PowerShell终端。在PowerShell窗口中输入对应命令并按下回车,如果你得到了窗口输出的版本号,证明你软件安装正确且环境变量配置成功:
make -v 查看make版本
openocd -v 查看openocd版本
arm-none-eabi-gcc -v 查看gcc-arm版本
二:STM32CubeMX 生成
使有STM32CubeMX 生成标准模版,需要注意的是在Project Manager选项卡中,Toolchain/IDE选项选择Makefile
三:Visual Studio Code配置
1.安装插件:
在生成的程序模板中,以刚生成的LEDTESET工程为例,选中文件夹右击选择《通过Visual Studio Code打开》。
安装一下必要的插件
2.工程配置:
1)按F1键或者catrl+shift+P,输入:编辑配置UI选择
打开后随意打开一个C文件可能会发现很多语法报错,没关系我们接下来一个一个配置
C/C++:编辑配置(UI)
在打开的界面做如下修改:
特别说明:定义,每行一个定义下方USE-HAL-DRIVER 和 STM32F103xB由Makefile中复制过来
2)Make,Make clean,Update
在Main.c中写一个闪灯代码,终端界面输入make 编译无误
while (1)
{
/* USER CODE END WHILE */
HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);
HAL_Delay(200);
/* USER CODE BEGIN 3 */
}
Windows PowerShell
版权所有 (C) Microsoft Corporation。保留所有权利。
尝试新的跨平台 PowerShell https://aka.ms/pscore6
PS D:\STM32CubeMX\PROJECT\LED> make
..................................
arm-none-eabi-size build/LED.elf
text data bss dec hex filename
3400 20 1572 4992 1380 build/LED.elf
arm-none-eabi-objcopy -O ihex build/LED.elf build/LED.hex
arm-none-eabi-objcopy -O binary -S build/LED.elf build/LED.bin
PS D:\STM32CubeMX\PROJECT\LED>
输入make clean 清除编译文件发现报如下错误,如下图修修后再次在终端界面输入:make clean,发现build文件夹中删除了所有之前编译文件了
PS D:\STM32CubeMX\PROJECT\LED> make clean
rm -fR build
process_begin: CreateProcess(NULL, rm -fR build, ...) failed.
make (e=2): 系统找不到指定的文件。
make: [Makefile:182: clean] Error 2 (ignored)
PS D:\STM32CubeMX\PROJECT\LED>
连接STLINK开发板与电脑,在终端界面输入:openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg -c 'program build/LED.bin exit 0x8000000' 下载代码到开发板
3)tasks.json编写
以上编译,清除,下载都是通过输入命令实现有点麻烦,我们需要添加task命令实现一键编译,下载。
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "编译",
"type": "shell",
"command": "make -j4 all"
},
{
"label": "清理",
"type": "shell",
"command": "make -j4 clean",
},
{
"label": "下载",
"type": "shell",
"command": "make -j4 all;openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg -c 'program build/LED.bin exit 0x8000000'"
}
]
}
4)launch.json编写
点击运行和调试图标-》运行和调试-》选择C++(GDB/LLDB)
删除系统自带launch.json中的内容
点击左下角”添加配置“-》选择"{}Cortex Debug:openOCD"
进行内容修改
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations":[
{
"cwd": "${workspaceRoot}",
"executable": "build/LED.elf",
"name": "Debug Microcontroller",
"request": "launch",
"type": "cortex-debug",
"showDevDebugOutput": false,
"servertype": "openocd",
"configFiles": [
"interface/stlink-v2.cfg",
"target/stm32f1x.cfg"
],
"preLaunchTask": "编译" //调试前执行编译,防修改代码未编译
}
]
}
至此完成对STLINK联机调试