Vscode开发STM32标准库

Vscode开发STM32

文章目录


使用VScode开发STM32(keil),基础江科大标准库的串口接收和发送。


引用

VSCode+EIDE开发STM32,支持标准库、HAL库、LL库,可以在VSCode里进行调试,编译以及下载,代码编辑更舒适,环境搭建超简单。
终端进程启动失败: shell 可执行文件"cmd.exe"的路径不存在

一、文档介绍

来源都是B站:

【VSCode+EIDE开发STM32,支持标准库、HAL库、LL库,可以在VSCode里进行调试,编译以及下载,代码编辑更舒适,环境搭建超简单。】https://www.bilibili.com/video/BV1nr4y1R7Jb?vd_source=08af6e050b3b401895104c61c8530ca9

EIDE+VSCode+STM32CubeMX+Keil5(可选)开发STM32

  • 支持在VSCode里调试工程
  • 相比于Keil Assistant编译更快(Keil原生编译速度,有时候还略快(测试的一些小项目)),下载烧录也更快
  • 一些工程配置(例如烧录选项、编译器版本等)可以在VSCode里完成,无需再借助Keil

插件/扩展下载及配置

  • EIDE
  • 下载必备工具:实用工具(setup utility):CppCheck、OpenOCD Programmer、GNU Arm Emdedded Toolchain(stable)

  • 配置EIDE:搜索栏输入:elf,Convert .axfto.elf for ARMCC Compiler

  • C/C++ Extesion Pack
  • 默认下载即可
  • Cortex Debug
  • 默认下载即可

外部支持(编译器)

  • ARMCC(AC5)
  • 在扩展EIDE上右键,选择扩展设置

  • 之后在Armcc v5 toolchain install directory一栏中粘贴路径,例如:F:\ProgramFile\MDK\Core\ARM\ARMCC

  • ARMCLANG(AC6)
  • 在扩展EIDE上右键,选择扩展设置

  • 之后在Armcc v6 toolchain install directory一栏中粘贴路径,例如:F:\ProgramFile\MDK\Core\ARM\ARMCLANG

调试

  • 下拉选择OpenOCD,点击调试即可

  • 调试的步骤与Keil相似

HAL库和LL库与标准库导入工程时的区别

  • HAL库与LL库导入工程后只需要设置烧录器即可
  • 标准库还需要在Project Attributes下的Preprocessor Definitios一项中,添加STM32F10X_MD

优缺点

  • 优点是使用ARMCC和ARMCLANG编好像译更快,体积更小

  • 缺点是这俩好像不免费(貌似也有免费的版本可用,但为了方便就使用Keil安装后集成的版本) 典型报错

  • 标准库:non-ASM statement in naked function is not supported:此类报错是编译器版本的问题

    一般这个工程之前是用Keil编译过,且是AC5编译,但在EIDE里选择了AC6

    解决办法:更换回AC5版本

  • HAL库可以自由切换版本进行编译,目前没有出现报错

免责声明

  • 该教程仅验证了STM32F103C8T6这块板子,HAL库和标准库版本,LL库均支持调试下载,以及STM32F407VET6的HAL库

  • 对于添加新的模块到工程以及串口重定向的研究,暂时没有进行验证

  • 由于UP在接触过HAL库之后就没有再使用标准库了,所以F4系列的标准库例程就没有进行测试

    有需要的小伙伴可以仿照上文提到的:HAL库和LL库与标准库导入工程时的区别,再对导入的工程进行配置

一些小Bug,以及应对措施

  • 使用ST-Link-V2下载器进行烧录时,若遇到下述报错(提示可能准确些),无需担心,程序可以正常烧录

    (测试时烧录STM32F103C8T6不会出现这种情况,默认配置)

Info : auto-selecting first available session transport "hla_swd". To override use 'transport select <transport>.
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD

Info : clock speed 2000 kHz
Info : STLINK V2J37S7 (API v2) VID:PID 0483:3748
Info : Target voltage: 3.278715
Info : [stm32f4x.cpu] Cortex-M4 r0p1 processor detected
Info : [stm32f4x.cpu] target has 6 breakpoints, 4 watchpoints
Info : starting gdb server for stm32f4x.cpu on 3333
Info : Listening on port 3333 for gdb connections
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
[stm32f4x.cpu] halted due to debug-request, current mode: Thread
xPSR: 0x01000000 pc: 0x080020f0 msp: 0x20000418
Info : Unable to match requested speed 8000 kHz, using 4000 kHz
Info : Unable to match requested speed 8000 kHz, using 4000 kHz
** Programming Started **
Info : device id = 0x10076413
Info : flash size = 512 KiB
** Programming Finished **
** Verify Started **
** Verified OK **
Info : Unable to match requested speed 2000 kHz, using 1800 kHz
Info : Unable to match requested speed 2000 kHz, using 1800 kHz

  • 使用ST-Link-V2(小)进行调试时,第一次可能会报错弹窗(这里忘记截图了)

    此时无需担心,只需要再次编译工程,再次点调试,大多数情况下就OK了

    (但是也不排除进行了上述操作,但仍然无法解决的问题,此时推荐DAP-Link或者正版ST-Link)

二、实际操作(基于标准库)

VScode软件

标准库文件

添加插件

这个是中文的可以不加

1、




EIDE安装实用工具

加入外部链接

这三个地址操作为:

这两个文件夹的绝对地址填进去

对keil图表的属性,填进去到第三个。

回到VSCODE中:


这里是创建在不在一起

我这里选的是不在一起,就是文件都在其他的地方:你也可以选择在一起。

点击继续

再点击EIDE;

进行配置:

支持包我这里是离线安装:


烧录:

我这里是st-link我选择了这个

这个宏定义应该加上:STM32F10X_MD

默认是不生成HEX文件关掉它:

进行编译

下载到开发板

实验现象


总结

1、根据教程就行

2、主要编译器默认不生成HEX文件

3、还有就是要添加宏:STM32F10X_MD

相关推荐
android_xc13 小时前
Android Studio适配butterknife遇到的坑
android·ide·android studio·butterknife
代码总长两年半13 小时前
STM32物联网项目---ESP8266微信小程序结合OneNET平台MQTT实现STM32单片机远程智能控制---代码篇(四)
stm32·单片机·物联网
云梦谭14 小时前
Cursor 编辑器:面向 AI 编程的新一代 IDE
ide·人工智能·编辑器
猫头虎14 小时前
2025最新超详细FreeRTOS入门教程:第八章 FreeRTOS任务通知
stm32·单片机·嵌入式硬件·物联网·硬件架构·51单片机·硬件工程
学生董格14 小时前
[嵌入式embed]Keil5烧录后STM32不自动运行,复位才能运行
stm32·单片机·嵌入式硬件
zhong liu bin17 小时前
Vue框架技术详解——项目驱动概念理解【前端】【Vue】
前端·javascript·vue.js·vscode·vue
_BugMan19 小时前
【IDEA】干活?一个IDEA即可,集成开发平台打造攻略
java·ide·intellij-idea
茯苓gao1 天前
STM32G4 速度环开环,电流环闭环 IF模式建模
笔记·stm32·单片机·嵌入式硬件·学习
点灯小铭1 天前
基于STM32单片机的智能粮仓温湿度检测蓝牙手机APP设计
stm32·单片机·智能手机·毕业设计·课程设计
生擒小朵拉1 天前
STM32添加库函数
java·javascript·stm32