如何使用Visual Studio Code+STM32Cube MX优雅的编写STM32程序(1)

(在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联机调试

 

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值