百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

vs code 开发stm32 vscode开发stm32

nanshan 2024-12-22 19:55 14 浏览 0 评论

环境搭建

作者在使用官方IDE开发了一段时间后,发现了很多的不足之处,遂转战VSCode + 开源 arm 工具链 + OpenOCD开发STM32的环境,该方案可跨平台使用,希望对读者有所帮助。

需安装的软件如下:

1、STM32CubeMX:通过官方该工具可快速生成带makefile的HAL库工程。下载网址如下,需要登陆方可下载。

https://www.st.com/en/development-tools/stm32cubemx.html书签:STM32CubeMX - STMicroelectronics

2、vs code:编辑器,链接如下

https://code.visualstudio.com/书签:Visual Studio Code - Code Editing. Redefined

3、GNU Arm Embedded Toolchain:arm用的GNU工具链,包括编译器(gcc),调试器(gdb),链接器(ld)和其它工具。需配置环境变量。

https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads书签:GNU Toolchain | GNU Arm Embedded Toolchain Downloads – Arm Developer

4、 OpenOCD ( windows版 ):一个开源的片上调试器。仅需下载解压,配置环境变量。

https://gnutoolchains.com/arm-eabi/openocd/书签:Download OpenOCD for Windows

5、Zadig:用来装jlink 的USB驱动的,虽然Jlink插上就能装驱动,但是直接装的OpenOCD识别不到。

https://zadig.akeo.ie/书签:Zadig - USB driver installation made easy

将jlink接入电脑,打开软件,选择Options---List All Devices,下拉菜单中选择J-link,然后在右侧选择WinUSB,点击Reinstall Driver。

6、Git:用于版本管理,需要注意的是我没有用mingw,因为国内网络环境有安装失败几率,其实GIT是基于mingw的,但是由于其轻量级的原因不支持make,需要添加make,wget等工具。

https://git-scm.com/书签:Git

安装完成GIT后,需要进行以下四步操作:

      • https://sourceforge.net/projects/ezwinports/files/下载make-x.x-x-without-guile-w32-bin.zip文件。
      • 解压文件。
      • 将解压出来的文件全部拷贝到: D:\Program Files\Git\mingw64\ ,如果跳出来需要替换的文件要选择不替换。
      • 在git bash窗口下执行make,不提示command not found即为安装成功。

编译

利用STM32CubeMX生成makefile类型的工程。

安装vs code基本插件

Chinese (Simplified)C/C++C/C++ Snippets、ARM、Cortex-Debug

配置c_cpp_properties.json。

点击黄色的小灯泡,

{
"configurations": [
{
"name": "Win32",
"includePath": [
"D:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2021.07/lib/gcc/arm-none-eabi/10.3.1/include",
"${workspaceFolder}/Core/Inc",
"${workspaceFolder}/Drivers/STM32F1xx_HAL_Driver/Inc",
"${workspaceFolder}/Drivers/STM32F1xx_HAL_Driver/Inc/Legacy",
"${workspaceFolder}/Drivers/CMSIS/Include",
"${workspaceFolder}/Drivers/CMSIS/Device/ST/STM32F1xx/Include"
],
"defines": [
"USE_HAL_DRIVER",
"STM32F103xB"
],
"compilerPath": "D:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2021.07/bin/arm-none-eabi-gcc.exe",
"intelliSenseMode": "gcc-x64",
"browse": {
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": "",
"path": [
"${workspaceFolder}"
]
}
}
],
"version": 4
}

JavaScript

配置tasks.json。

在.vscode目录下创建tasks.json文件。

{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "make",
"args": [
"-j4"
]
},
{
"label": "clean",
"type": "shell",
"command": "make",
"args": [
"clean"
]
}
]
}

JavaScript

调试

openocd配置

在项目文件夹下新建openocd.cfg文件。openocd启动时,会自动在当前目录下寻找名为openocd.cfg的文件作为配置文件。

下载svd文件

VS Code可以通过它来知道外设寄存器的地址分布,从而把寄存器内容展示到窗口中。下载好的STM32F103.svd文件放在项目文件夹根目录即可。

https://github.com/posborne/cmsis-svd书签:https://github.com/posborne/cmsis-svd

配置VS Code的调试功能

openocd在.vscode文件夹中新建一个launch.json.

{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [

{
"name": "Cortex Debug",
"cwd": "${workspaceRoot}",
"executable": "${workspaceRoot}/build/${workspaceFolderBasename}.elf",
"request": "launch",
"type": "cortex-debug",

"device":"STM32F103C8", //使用J-link GDB Server时必须;其他GBD Server时可选(有可能帮助自动选择SVD文件)。支持的设备见 https://www.segger.com/downloads/supported-devices.php
"svdFile": "./STM32F103xx.svd", //svd文件,有这个文件才能查看寄存器的值,每个单片机都不同。可以在以下地址找到 https://github.com/posborne/cmsis-svd
"servertype": "openocd", //使用的GDB Server
"configFiles": [
"${workspaceRoot}/openocd.cfg"
],
"preLaunchTask": "build"
}
]
}

JavaScript

Jlink GDB Server配置

安装SEGGER Jlink驱动全家桶。

https://www.segger.com/downloads/jlink/书签:SEGGER - The Embedded Experts - Downloads - J-Link / J-Trace

在前面用Zadig修改了jlink驱动的,建议先在设备管理器里面卸载,然后安装全家桶。安装完成后记着添加环境变量。

给代码中添加源文件和头文件

C:\Program Files (x86)\SEGGER\JLink\Samples\RTT路径中,有一个Jlink RTT例程源码压缩包解压。然后把压缩包里的整个RTT文件夹复制到你的STM32工程中:

添加log.h文件。


#include
#define _LOH_H_
#ifndef _LOG_H_"SEGGER_RTT.h"
#define
LOG_DEBUG 1
#
if LOG_DEBUG
#define
LOG_PROTO(type,color,format,...)
\SEGGER_RTT_printf(0," %s%s"format"\r\n%s",
color \,
type \,
##__VA_ARGS__ \,
\RTT_CTRL_RESET)

/* 清屏*/

#define LOG_CLEAR() SEGGER_RTT_WriteString(0, " "RTT_CTRL_CLEAR)

/* 无颜色日志输出 */

#define LOG(format,...) LOG_PROTO("","",format,##__VA_ARGS__)

/* 有颜色格式日志输出 */

#define LOGI(format,...) LOG_PROTO("I: ", RTT_CTRL_TEXT_BRIGHT_GREEN , format, ##__VA_ARGS__)
#define LOGW(format,...) LOG_PROTO("W: ", RTT_CTRL_TEXT_BRIGHT_YELLOW, format, ##__VA_ARGS__)
#define LOGE(format,...) LOG_PROTO("E: ", RTT_CTRL_TEXT_BRIGHT_RED , format, ##__VA_ARGS__)
#
else
#define LOG_CLEAR()
#define LOG
#define LOGI
#define LOGW
#define LOGE
#endif
#endif
// !_LOG_H_

JavaScript

修改main.c、修改Makefile和json配置文件

修改main.c

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */

#include "log.h"
/* USER CODE END Includes */

JavaScript

while (1)
{
/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */
cnt++;
LOGE("this is an error !");
LOGI("this is an iofo with params ! CNT:%d",cnt);
LOGW("this is an warning !");
HAL_Delay(500);
}

JavaScript

修改Makefile

修改c_cpp_properties.json

修改launch.json

修改Tasks.json

按F5进入调试模式,然后运行。终端中出现了带颜色的log日志,同时各个寄存器的值都可以看到,读者可自行探索其他功能。

相关推荐

Let’s Encrypt免费搭建HTTPS网站

HTTPS(全称:HyperTextTransferProtocoloverSecureSocketLayer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入...

使用Nginx配置TCP负载均衡(nginx tcp负载)

假设Kubernetes集群已经配置好,我们将基于CentOS为Nginx创建一个虚拟机。以下是实验种设置的详细信息:Nginx(CenOS8Minimal)-192.168.1.50Kube...

Nginx负载均衡及支持HTTPS与申请免费SSL证书

背景有两台minio文件服务器已做好集群配置,一台是192.168.56.41:9000;另一台是192.168.56.42:9000。应用程序通过Nginx负载均衡调用这两台minio服务,减轻单点...

HTTPS配置实战(https配置文件)

原因现在网站使用HTTPS是规范操作之一,前些日子买了腾讯云服务,同时申请了域名http://www.asap2me.top/,目前该域名只支持HTTP,想升级为HTTPS。关于HTTPS的链接过程大...

只有IP地址没有域名实现HTTPS访问方法

一般来说,要实现HTTPS,得有个注册好的域名才行。但有时候呢,咱只有服务器的IP地址,没注册域名,这种特殊情况下,也能照样实现HTTPS安全访问,按下面这些步骤来就行:第一步,先确认公网...

超详解:HTTPS及配置Django+HTTPS开发环境

众所周知HTTP协议是以TCP协议为基石诞生的一个用于传输Web内容的一个网络协议,在“网络分层模型”中属于“应用层协议”的一种。在这里我们并不研究该协议标准本身,而是从安全角度去探究使用该协议传输数...

Godaddy购买SSL之后Nginx配置流程以及各种错误的解决

完整流程:参考地址:https://sg.godaddy.com/zh/help/nginx-generate-csrs-certificate-signing-requests-3601生成NGI...

Nginx从安装到高可用,一篇搞定(nginx安装与配置详解)

一、Nginx安装1、去官网http://nginx.org/下载对应的nginx包,推荐使用稳定版本2、上传nginx到linux系统3、安装依赖环境(1)安装gcc环境yuminstallgc...

阿里云免费证书申请,配置安装,使用tomcat,支持http/https访问

参数说明商品类型默认已选择云盾证书服务(无需修改)。云盾证书服务类型SSL证书服务的类型。默认已选择云盾SSL证书(无需修改),表示付费版SSL证书。如果您需要免费领取或付费扩容DV单域名证书【免费试...

你试过两步实现Nginx的规范配置吗?极速生成Nginx配置小工具

NGINX是一款轻量级的Web服务器,最强大的功能之一是能够有效地提供HTML和媒体文件等静态内容。NGINX使用异步事件驱动模型,在负载下提供可预测的性能。是当下最受欢迎的高性能的Web...

从零开始搭建HTTPS服务(搭建https网站)

搭建HTTPS服务的最初目的是为了开发微信小程序,因为wx.request只允许发起HTTPS请求,并且还必须和指定的域名进行网络通信。要从零开始搭建一个HTTPS的服务需要下面4...

群晖NAS使用官网域名和自己的域名配置SSL实现HTTPS访问

安全第一步,群晖NAS使用官网域名和自己的域名配置SSL实现HTTPS访问【新手导向】NAS本质还是一个可以随时随地访问的个人数据存储中心,我们在外网访问的时候,特别是在公网IP下,其实会面临着很多安...

让网站快速升级HTTPS协议提高安全性

为什么用HTTPS网络安全越来越受到重视,很多互联网服务网站,都已经升级改造为https协议。https协议下数据包是ssl/tcl加密的,而http包是明文传输。如果请求一旦被拦截,数据就会泄露产生...

用Https方式访问Harbor-1.9版本(https访问流程)

我上周在头条号写过一篇原创文章《Docker-Harbor&Docker-kitematic史上最详细双系统配置手册》,这篇算是它的姊妹篇吧。这篇文章也将用到我在头条写的另一篇原创文章的...

如何启用 HTTPS 并配置免费的 SSL 证书

在Linux服务器上启用HTTPS并配置免费的SSL证书(以Let'sEncrypt为例)可以通过以下步骤完成:---###**一、准备工作**1.**确保域名已解析**...

取消回复欢迎 发表评论: