Linux党专属!VSCode+STM32CubeMX+GCC搭建ARM开发环境全记录

VSCode+GNU-ARM-GCC搭建雅特力开发环境全攻略(附Cortex-Debug配置技巧) 本文详细介绍了如何使用VSCode和GNU-ARM-GCC为雅特力(Atery)Cortex-M芯片搭建轻量高效的嵌入式开发环境。内容涵盖工具链安装、项目结构创建、Makefile编写、VSCode插件配置,并重点解析了Cortex-Debug插件的深度配置与调试技巧,帮助开发者从传统IDE平滑过渡,获得更自由的开发体验。 阅读详情

告别Keil:在Linux上构建高效、现代的STM32开发工作流

如果你和我一样,是个常年泡在Linux终端里的开发者,每次切回Windows只是为了用Keil或IAR捣鼓STM32,心里总会有点别扭。那种感觉就像穿着正装去爬山——工具本身没问题,但和环境格格不入。几年前我开始琢磨,能不能在熟悉的Ubuntu桌面和强大的VSCode里,搭建一套完整的ARM Cortex-M开发环境?经过反复折腾和几个项目的实战,这套基于STM32CubeMX + GCC + VSCode + OpenOCD的组合拳已经成了我的主力配置。它不仅彻底摆脱了对Windows和专有IDE的依赖,还带来了更清晰的工程结构、更快的编译速度,以及用Git进行版本控制时的天然友好性。今天,我就把这套工作流的搭建心得和实战细节完整分享出来,给所有想在Linux上优雅开发嵌入式系统的朋友一个参考。

1. 基石:搭建纯净的ARM-GCC工具链

在Linux上开发STM32,第一步就是需要一个能生成ARM机器码的编译器。我们不用厂商捆绑的IDE,而是选择开源、强大的GNU Arm Embedded Toolchain。它的优势在于完全免费、跨平台,并且与Linux的构建系统(如Make)无缝集成。

1.1 获取与安装编译器

最推荐的方式是从Arm官方或可靠的镜像源直接下载预编译的工具链。避免使用某些Linux发行版仓库里可能过时的版本。以最新的12.3.rel1版本为例,我们可以这样操作:

# 创建一个专门的目录存放开发工具
mkdir -p ~/tools/arm-gcc && cd ~/tools/arm-gcc

# 下载64位Linux版本的GCC工具链(具体版本号请查阅官网最新)
wget https://developer.arm.com/-/media/Files/downloads/gnu/12.3.rel1/binrel/arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi.tar.xz

# 解压到当前目录
tar -xf arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi.tar.xz

# 将工具链的bin目录永久添加到系统PATH中
echo 'export PATH="$HOME/tools/arm-gcc/arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

安装完成后,打开一个新的终端,验证编译器是否可用:

arm-none-eabi-gcc --version

你应该能看到类似 arm-none-eabi-gcc (GNU Toolchain for the Arm Architecture 12.3.rel1) 12.3.1 20231009 的输出。这个 arm-none-eabi- 前缀是关键,它表示这是一个针对嵌入式应用二进制接口(EABI)、不包含操作系统(none)的ARM编译器。

1.2 理解工具链的关键组件

仅仅安装还不够,知道每个工具的作用才能更好地调试问题。这个工具链包含了一系列核心命令:

工具命令主要用途在开发流程中的角色
arm-none-eabi-gccC/C++编译器将源代码编译成ARM目标文件(.o)
arm-none-eabi-g++C++编译器同上,专门处理C++代码
arm-none-eabi-as汇编器处理汇编语言源文件
arm-none-eabi-ld链接器将多个目标文件与库链接成最终的可执行文件(.elf)
arm-none-eabi-objcopy目标文件转换工具从.elf文件生成烧录用的.bin或.hex文件
arm-none-eabi-objdump目标文件反汇编工具查看.elf文件的汇编代码、段信息,用于深度调试
arm-none-eabi-size段大小查看工具快速查看代码(text)、数据(data)、未初始化变量(bss)占用的内存大小
arm-none-eabi-gdbGNU调试器配合调试探头进行源码级调试

提示:养成在编译后立即运行 arm-none-eabi-size build/your_project.elf 的习惯。它能直观地告诉你程序用了多少Flash和RAM,对于资源紧张的MCU项目至关重要,可以避免后期内存溢出的头疼问题。

2. 工程配置中枢:STM32CubeMX的Linux之道

STM32CubeMX是ST官方推出的图形化配置工具,它通过直观的界面帮你初始化时钟树、配置外设引脚、管理中间件,并生成高度可移植的HAL/LL库代码。在Linux上使用它,需要注意一些细节。

2.1 安装与启动优化

STM32CubeMX是基于Java开发的,因此需要先安装Java运行时环境(JRE)。建议使用OpenJDK的最新LTS版本,兼容性更好。

# 在Ubuntu/Debian上安装OpenJDK 17
sudo apt update
sudo apt install openjdk-17-jre-headless

# 验证Java安装
java --version

从ST官网下载Linux版本的STM32CubeMX安装包,通常是一个 .linux 文件。给予执行权限后运行即可启动安装程序。我建议将其安装到用户主目录下,例如 ~/tools/STM32CubeMX,避免需要sudo权限。

安装完成后,每次通过 ~/tools/STM32CubeMX/stm32cubemx 启动。你可以为其创建一个桌面快捷方式,或者更“极客”一点,在 ~/.local/bin/ 下创建一个软链接:

ln -s ~/tools/STM32CubeMX/stm32cubemx ~/.local/bin/cubemx

这样,在终端里直接输入 cubemx 就能启动了。

2.2 生成不依赖IDE的Makefile工程

这是脱离Windows生态的关键一步。在CubeMX的 Project Manager 标签页中,找到 Toolchain / IDE 选项。这里务必选择 Makefile,而不是MDK-ARM或STM32CubeIDE。

选择Makefile意味着CubeMX会生成一个标准的 Makefile 文件,以及与之配套的 Makefile 包含文件(通常位于 Drivers/ 等子目录)。这个Makefile已经预置了所有源文件路径、编译器标志、链接脚本引用,可以直接用我们之前安装的 arm-none-eabi-gcc 进行编译。生成工程时,还有几个细节值得关注:

  • 工程结构:CubeMX会生成一个清晰的目录树,将用户代码(Src/, Inc/)、HAL库代码(Drivers/)、启动文件(Startup/)和链接脚本(STM32XXXXXX_FLASH.ld)分门别类放好。这种结构非常利于版本控制,你可以轻松地将 Drivers/ 目录添加到 .gitignore,只跟踪自己的应用代码和CubeMX的工程文件(.ioc)。
  • 代码生成策略:建议在 Project Manager -> Code Generator 里,选择“为每个外设生成独立的 .c/.h 文件”。这会让代码结构更清晰。同时,勾选“备份先前生成的文件”,这样当你重新生成代码时,CubeMX不会覆盖你手动修改过的文件,而是将其重命名为 .old 后缀,安全系数更高。

一个典型的CubeMX生成的Makefile工程目录结构如下:

MyStm32Project/
├── Core/
│   ├── Inc/           # 用户头文件
│   ├── Src/           # 用户源文件 (main.c, gpio.c, etc.)
│   └── Startup/       # 启动汇编文件 startup_stm32f4xx.s
├── Drivers/
│   ├── CMSIS/         # Cortex微控制器软件接口标准
│   └── STM32F4xx_HAL_Driver/ # ST官方HAL库
├── Makefile           # 主构建文件
├── STM32F407ZGTx_FLASH.ld # 链接脚本,定义内存布局
└── MyStm32Project.ioc # CubeMX工程文件,所有配置的源头

3. 打造智能编辑器:VSCode的嵌入式开发配置

VSCode本身只是一个编辑器,但其强大的扩展生态系统让它能胜任复杂的开发工作。我们的目标是将其配置成一个针对STM32开发的智能IDE。

3.1 核心扩展安装

首先,安装以下几个必不可少的扩展:

  1. C/C++ (Microsoft):提供代码补全、跳转定义、错误检查等核心语言功能。
  2. Cortex-Debug:这是实现源码调试的神器。它支持通过OpenOCD、J-Link等多种调试探头连接STM32,并在VSCode内提供变量查看、断点、内存监视等完整的调试界面。
  3. Makefile Tools:提供Makefile目标识别、构建任务运行等功能,让你不用离开编辑器就能执行编译、清理等操作。

安装完成后,重点在于配置 C/C++ 扩展。它需要一个 c_cpp_properties.json 文件来知道去哪里找头文件、预定义哪些宏。最准确的信息来源就是CubeMX生成的那个 Makefile。

3.2 从Makefile自动推导配置

手动编写 c_cpp_properties.json 很繁琐,而且容易出错。我们可以利用Makefile中已有的 C_INCLUDES 和 C_DEFS 变量。打开工程根目录下的 Makefile,找到类似下面的段落:

# C includes
C_INCLUDES =  \
-ICore/Inc \
-IDrivers/STM32F4xx_HAL_Driver/Inc \
-IDrivers/STM32F4xx_HAL_Driver/Inc/Legacy \
-IDrivers/CMSIS/Device/ST/STM32F4xx/Include \
-IDrivers/CMSIS/Include

# C defines
C_DEFS =  \
-DUSE_HAL_DRIVER \
-DSTM32F407xx

在VSCode中,按下 Ctrl+Shift+P,输入 “C/C++: Edit Configurations (UI)”,这会打开一个图形化配置界面。你需要将 C_INCLUDES 中的路径(去掉 -I 前缀)填入 Include Path,将 C_DEFS 中的宏定义(去掉 -D 前缀)填入 Defines。同时,在 Compiler path 中填写你的 arm-none-eabi-gcc 完整路径。

这样配置后,VSCode的智能感知就能正确索引HAL库的所有函数和类型,实现精准的代码补全和错误提示,体验不输于专业IDE。

3.3 配置构建与调试任务

为了让开发更流畅,我们在 .vscode 目录下创建两个任务配置文件:tasks.json 和 launch.json。

tasks.json 用于定义构建任务。我们可以创建一个调用 make 的任务,并将其设置为默认的构建任务。

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Build STM32 Project",
            "type": "shell",
            "command": "make",
            "args": ["-j4"], // 使用4个线程并行编译,加快速度
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": ["$gcc"],
            "detail": "使用 arm-none-eabi-gcc 编译工程"
        },
        {
            "label": "Clean Project",
            "type": "shell",
            "command": "make",
            "args": ["clean"],
            "group": "build"
        }
    ]
}

配置好后,按 Ctrl+Shift+B 就能直接编译整个工程。launch.json 则用于配置调试。这里以使用ST-Link调试器和OpenOCD为例:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Cortex Debug (OpenOCD)",
            "cwd": "${workspaceRoot}",
            "executable": "./build/${workspaceFolderBasename}.elf",
            "request": "launch",
            "type": "cortex-debug",
            "servertype": "openocd",
            "serverpath": "openocd", // 确保openocd在PATH中
            "configFiles": [
                "interface/stlink.cfg",
                "target/stm32f4x.cfg"
            ],
            "runToEntryPoint": "main",
            "device": "STM32F407ZG",
            "svdFile": "${env:HOME}/tools/STM32Cube/Repository/STM32Cube_FW_F4_V1.27.1/Drivers/CMSIS/SVD/STM32F407.svd"
        }
    ]
}

这个配置做了几件关键事:指定了调试服务器为OpenOCD,使用了ST-Link接口和STM32F4系列的芯片配置文件,并指定了SVD(系统视图描述)文件。SVD文件能让Cortex-Debug插件在调试时展示外设寄存器的具体位域,比如直接看到GPIO端口输出数据寄存器的值,极大方便了硬件调试。

4. 烧录与调试:OpenOCD打通最后一步

编译生成的 .elf 或 .bin 文件需要烧录到芯片里,OpenOCD(Open On-Chip Debugger)就是这个桥梁。它是一个开源的调试服务器,支持多种调试探头(ST-Link, J-Link, CMSIS-DAP等)和芯片目标。

4.1 安装与连接验证

在Ubuntu上,可以直接通过包管理器安装OpenOCD,但版本可能较旧。为了更好的兼容性(尤其是对新款芯片的支持),建议从源码编译或使用第三方维护的新版本PPA。

# 方法一:安装官方仓库版本(可能较旧)
sudo apt install openocd

# 方法二:使用PPA安装较新版本(以Ubuntu 22.04为例)
sudo add-apt-repository ppa:openocd/daily
sudo apt update
sudo apt install openocd

安装后,将ST-Link调试器连接到电脑和STM32开发板。在终端运行以下命令测试连接:

openocd -f interface/stlink.cfg -f target/stm32f4x.cfg

如果看到类似 Info : stm32f4x.cpu: hardware has 6 breakpoints, 4 watchpoints 的输出,说明OpenOCD成功识别了你的调试器和芯片,连接正常。这时,OpenOCD会在本地 3333 端口启动一个GDB服务器,等待调试器连接。

4.2 灵活的烧录方式

有了OpenOCD,烧录程序有多种方式,可以根据场景选择:

方式一:使用GDB命令烧录(最通用) 在终端中,先启动OpenOCD,然后另开一个终端,使用GDB连接并烧录:

# 终端1:启动OpenOCD服务器
openocd -f interface/stlink.cfg -f target/stm32f4x.cfg

# 终端2:使用GDB连接并烧录
arm-none-eabi-gdb build/MyProject.elf
(gdb) target remote localhost:3333
(gdb) monitor reset halt
(gdb) load
(gdb) monitor reset run
(gdb) detach
(gdb) quit

方式二:使用OpenOCD的program命令(一键烧录) 可以在一个命令中完成:

openocd -f interface/stlink.cfg -f target/stm32f4x.cfg -c "program build/MyProject.elf verify reset exit"

这个命令会先连接,然后擦除、烧录、校验、复位并退出,非常适合自动化脚本。

方式三:集成到Makefile中(最便捷) 我们可以修改CubeMX生成的 Makefile,在末尾添加一个自定义目标,比如 flash:

# 在Makefile末尾添加
.PHONY: flash
flash: all
	openocd -f interface/stlink.cfg -f target/stm32f4x.cfg \
	        -c "program $(BUILD_DIR)/$(TARGET).elf verify reset exit"

这样,编译完成后只需要执行 make flash,就能自动完成烧录,极大地提升了开发效率。

4.3 实战调试技巧

当程序行为异常时,调试能力就至关重要。在VSCode中配置好 launch.json 后,按下 F5 即可开始调试。程序会暂停在 main 函数入口。这里分享几个我常用的调试技巧:

  • 硬件断点与观察点:Cortex-M内核通常支持有限的硬件断点(如6个)。在关键状态机切换处、中断服务程序入口设置断点。对于查找某个变量被意外修改的问题,可以使用“观察点”(Watchpoint),当变量值改变时自动暂停。
  • 实时变量监控:在 WATCH 窗口添加需要监控的全局变量或外设寄存器(如 GPIOA->ODR),可以实时看到其值的变化。
  • 调用堆栈与反汇编:当程序跑飞进入HardFault时,查看 CALL STACK 窗口可能无法给出有效信息。此时需要结合 反汇编视图,查看程序计数器(PC)附近的汇编指令,并检查 SCB->CFSR(可配置故障状态寄存器)的值,根据位域判断是总线错误、存储器管理错误还是用法错误。
  • 串口打印调试:虽然源码调试强大,但有时在时序严格的中断里打断点会改变程序行为。这时,通过重定向 printf 到串口(使用 HAL_UART_Transmit 或 _write 系统调用),在终端里查看日志,是一种非常有效的补充手段。

有一次我调试一个SPI DMA传输不稳定的问题,在DMA传输完成中断里设断点会导致数据错位。后来我改为在中断里将一个GPIO引脚拉高拉低,然后用逻辑分析仪抓取这个引脚和SPI时钟的波形,结合串口打印的DMA状态寄存器值,很快就定位到了是时钟配置分频比计算有误。这种“软硬结合”的调试思路,在嵌入式开发中往往比单纯依赖源码调试更有效。

这套Linux下的STM32开发环境,从最初的摸索到现在的熟练运用,给我的感受是:它确实需要前期投入一些学习成本,但带来的回报是长期且巨大的。你获得的是一个透明、可控、可定制且与现代软件开发工具链紧密结合的工作流。它让你更专注于代码和硬件逻辑本身,而不是与笨重的IDE作斗争。当你在终端里敲下 make -j8 && make flash,看着代码在几秒内编译并烧录完成,那种流畅感是传统方式难以比拟的。如果你已经熟悉Linux命令行和VSCode,不妨尝试迈出这一步,或许它会彻底改变你开发嵌入式项目的方式。

机器学习算法实战对比:从LR到XGBoost的性能深度解析 本文深度解析了从逻辑回归(LR)到XGBoost等机器学习算法的实战性能对比,涵盖了线性模型、非线性模型和集成学习方法。通过银行客户流失数据集的实际案例,详细比较了LR、KNN、SVM、决策树、随机森林和XGBoost在准确率、F1分数和训练时间等关键指标上的表现,并提供了算法选型和调优的实用建议。XGBoost在测试中表现最佳,准确率达到87.1%。 阅读详情

相关推荐

linux上搭建stm32开发环境 vscode+gcc+stm32cubeMX 和 vscode+platformIO

PC系统:ubuntu-18.04一、软件清单VScode:https://code.visualstudio.com/Downloadarm-none-eabi-gcc:https://launchpad.net/gcc-arm-embedded/+downloadCortex-Debug:  VSCode里面的插件,搜即可OpenOCD:sudo apt install openocd    ...

An introvert extrovert 的博客 8885

【算法岗求职笔记】逻辑回归(Logistic Regession,LR) · 十问十答

前言废话少说,机器学习第二篇为了能够持续更新和添加新的知识点,以及修改错误,建立了一个repo,欢迎大家来个star或者推荐给需要的朋友:https://github.com/chehongshu/machine-learning-interview-chinese理论推荐观看https://zhuanlan.zhihu.com/p/74874291 (非常详细,公式偏多...

AI蜗牛车 1688

告别Keil!用VSCode+STM32CubeMX+GCC打造免费高效的STM32开发环境(Windows/Linux通用)

本文详细介绍了如何利用VSCode、STM32CubeMX和GCC工具链构建免费高效的STM32开发环境,适用于Windows和Linux平台。通过配置VSCode插件、优化编译与调试流程,开发者可以显著提升工作效率,摆脱传统IDE的限制。这套现代化开发工作流已在多个量产项目中验证,编译速度比Keil快40%,内存占用减少60%。

weixin_30635053的博客 366

【Linux学习】WSL2+VSCode搭建ARM交叉编译环境

WSL2 + VSCode + 交叉编译工具链的方案,通过将Linux编译环境深度集成到Windows中,极大地优化了嵌入式开发的体验。它解决了传统虚拟机性能低下和切换繁琐的痛点,提供了近乎原生的编译速度和无缝的编辑、构建、调试工作流。从基础的Makefile项目到复杂的CMake工程,该方案都能提供良好的支持,是现代嵌入式Linux和ARM应用开发的强力组合。

weixin_38572213的博客 639

WSL2+VSCode+STM32CubeMX:构建Linux嵌入式开发工作流

本文详细介绍了如何利用WSL2、VSCode和STM32CubeMX构建高效的Linux嵌入式开发工作流。通过配置交叉编译工具链、集成CMake构建系统以及设置OpenOCD调试环境,开发者可以在熟悉的Linux环境下进行STM32开发,显著提升开发效率和调试体验。

github5actions的博客 832

VSCode+STM32CubeMX+GCC构建现代嵌入式开发环境实战

嵌入式开发是物联网和智能设备的核心技术领域,其开发环境的选择直接影响工程效率和质量。传统IDE如Keil虽然入门简单,但在代码管理、团队协作和工具集成方面存在局限。现代开发理念强调模块化工具链和工程化实践,通过VSCode的丰富插件生态、STM32CubeMX的图形化配置和ARM GCC开源工具链,可以构建高效可定制的开发环境。这种方案不仅支持FreeRTOS等实时操作系统,还能实现版本控制、静态分析和持续集成等软件工程最佳实践。对于STM32开发者而言,从单一IDE转向模块化工具集是工作流的重大升级,能够

weixin_33857679的博客 630

线性回归算法

回归最简单的定义是,给出一个点集D,用一个函数去拟合这个点集,并且使得点集与拟合函数间的误差最小,如果这个函数曲线是一条直线,那就被称为线性回归,如果曲线是一条二次曲线,就被称为二次回归。

weixin_44913071的博客 349

告别Keil MDK:用VSCode + ARM GCC + OpenOCD打造免费跨平台的STM32开发环境(Windows/Linux通用)

本文详细介绍了如何利用VSCode、ARM GCC和OpenOCD构建免费、跨平台的STM32开发环境,替代传统的Keil MDK。通过开源工具链,开发者可以享受零成本、跨平台一致性和高度定制化的优势,提升嵌入式开发效率。文章包含环境搭建、工程配置、高级调试技巧和生产力提升秘籍,适用于从简单项目到复杂RTOS应用的开发需求。

weixin_30740295的博客 486

VSCode+gcc开发STM32教程

最近在使用Keil开发STM32的时候总感觉代码写起来很很费劲,然后打算用vscode试试,刚开始用的是KeilAssitance这个插件,本质还是使用Keil进行配置,vscode写代码,体验了一下感觉还是不方便。后来想到了Linux,毕竟在写代码这方面,Linux的体验还是非常棒的。

八天一吨水的博客 5071

《嵌入式 - STM32开发指南》手把手教你搭建STM32开发环境 [Linux版 - 1]

笔者在前面写了Windows版的开发环境搭建,今天来了Linux版本的。 好了,言归正传,接下来说说STM32的开发都需要那些软件吧,而且都是开源免费的,随便你玩! (1) STM32CubeMX:STM32CubeMX是一个配置STM32代码的工具,用于生成带makefile的HAL库工程。注意STM32CubeMX是依赖Java的,所以要确保你电脑上安装了JRE。 (2) VSCode:超好用的编辑器,支持Windows、Linux、Mac,关键还免费,可谓业界良心了。 (3) GNU Arm Embe

不问归期的博客 3049

保姆级教程:用Jetson Orin Nano和ROS2 Humble搞定PIXhawk 4飞控通信(含配置文件详解)

本文提供了一份详细的Jetson Orin Nano与PIXhawk 4飞控通信配置指南,涵盖硬件连接、ROS2 Humble环境搭建、MAVROS2配置及通信调试全流程。通过实战案例和配置文件详解,帮助开发者快速实现无人机上位机与飞控的稳定通信,适用于无人机开发与自动化控制场景。

weixin_33670786的博客 475

Ubuntu系统下搭建STM32开发环境(CubeMX+VScode+STlink+OpenOCD+GDBserver)

目录 一、换源 2.1简介 2.2配置方法: 2.2.1图形界面配置 2.2.2手动更改 2.2.3 执行如下命令 二、相关软件安装 2.1.1 VSCode 2.1.2 必备插件 2.2 CubeMX 2.2.1 Java环境 2.2.2 安装CubeMX 2.3 arm-Linux-gcc交叉编译器 2.4 gdb server 2.5 OpenOCD 2.6 STlink 三、VSCode配置及调试 3.1 CubeMX生成Makefile文件 3.2 VSCode配置 一、换源 2.1简介 换源是因

qq_30858991的博客 1万+

别再自己写组件了!用uni-app的midButton属性5分钟搞定中间凸起TabBar(H5/小程序通用)

本文详细介绍了uni-app官方提供的midButton属性,帮助开发者5分钟内实现中间凸起的TabBar效果,无需编写繁琐的自定义组件代码。该方案兼容H5和微信小程序平台,配置简单且维护成本低,大幅提升开发效率和性能表现。

weixin_30431445的博客 348

VSCode 搭建 STM32 开发环境

本节记录一下 VSCode 搭建 STM32 开发环境的过程,整个开发链如下:VSCode 编辑代码 -> ARM GCC 编译 -> OpenOCD 仿真下载

嵌入式学习记录站点 9479

库存预测新思路:AI架构师的图神经网络应用

用图神经网络(GNN)解决传统库存预测的“关联盲区”,让预测从“孤立商品”转向“商品网络”。传统库存预测的痛点分析;GNN的核心概念(图结构、消息传递);GNN在库存预测中的算法原理与代码实战;实际应用场景与未来趋势。背景:用超市老板的烦恼引出传统方法的问题;核心概念:用“商品朋友圈”比喻GNN的图结构和消息传递;算法原理:用数学公式和Mermaid流程图讲清楚GNN的工作流程;实战:用PyTorch Geometric写一个简单的库存预测模型;

AI Python 编程之道的博客 959

【Unity Shader】2D模型 3D模型混用的穿模问题(Spine在3D场景中出现前后穿模问题的解决办法)

问题描述: 在3D场景中使用Spine模型(2D), 因为Spine需要像Billboard类似的处理,永远是垂直与相机的, 所以一般情况下2D模型能正常显示且前后的阻挡关系也是没有问题的,如下图所示,一切都很美好.(这里用一个四边形,图中的福字表示2D模型) 可是如果后面蓝色的格子比较高,或者2D角色本身也比较高,那么就会出现模型穿插的问题,如下图所示: 如果吧2D模型竖立起来,前后关系肯定是没有问题的,所以也能避免模型穿插的问题,可是就没有Billboard效果,圆形的福字已经被压扁了,如下图:

Vitens的专栏 4593

Ubuntu/Linux搭建STM32开发环境

本人所用 的Ubuntu版本为 Ubuntu 22.04。

qq_39547064的博客 2676

OpenCode:终端开源AI编程助手,多模型接入与实战指南

AI编程助手正在从IDE侧边栏走向终端环境。其核心原理是让模型直接读取项目文件、执行命令、查看报错,形成从诊断到修复的完整闭环,从而解决传统插件上下文割裂的问题。技术价值在于开源透明、模型无关,既可接入OpenAI等云端服务,也能通过Ollama连接本地模型,兼顾数据安全与离线场景。在工程实践中,它适用于长时间驻留项目、自动修Bug、团队统一AI工具链等需求。OpenCode正是这样一款终端AI助手,支持灵活配置第三方API密钥,提供免费档与Go套餐,并通过Skills技能系统让模型遵循标准操作流程。同时,

weixin_28745821的博客 328

Ubuntu系统下搭建STM32开发环境(基于CubeMX+VScode+STlink/Daplink+OpenOCD+GDBserver)

换源详细请见此文章Ubuntu更换国内源-优快云博客文章浏览阅读70次。本文记录Ubuntu更换国内源,让软件下载速度sou~sou~sou~

Wit鱼的博客 1399

6-Halcon-- var_threshold 函数功能(用于基于局部统计特性的动态阈值分割的算子)

var_threshold 是 HALCON 中用于基于局部统计特性的动态阈值分割的算子,特别适用于处理低对比度图像或纹理均匀但包含细微差异的场景。与 dyn_threshold 不同,它不依赖预处理生成的参考图像,而是直接在局部区域内计算灰度值的统计特性(均值和标准差),从而自适应调整阈值。

weixin_45590420的博客 1328

第 13 章:Spring AI Alibaba MCP 与 Nacos3 — 企业级MCP服务

理解Spring AI Alibaba 框架下的MCP服务与Nacos注册中心整合的必要性,学会Spring AI Alibaba-基于Nacos的MCP实现方法

paopao_wu的专栏 788

Windows下VSCode+GCC搭建STM32轻量开发环境

嵌入式开发中,基于GCC的开源工具链正成为替代商业IDE(如Keil、IAR)的重要选择。其核心原理是利用ARM GCC编译器、GNU Make构建系统与OpenOCD调试服务器,通过标准化接口协同完成编译、链接、烧录与GDB级调试。该方案具备高度可移植性与原理透明性,技术价值在于降低授权门槛、强化底层机制理解,并支持从单片机裸机到RTOS项目的平滑演进。典型应用场景涵盖STM32F0/F1/F4/H7等系列的教育实践、原型验证及中小型量产开发,尤其适合需要掌握编译链接流程、变量实时观测与ST-Link无侵

qsc901234的博客 805

基于STM32L4XX、HAL库的ICP-10111压力传感器驱动程序设计

define ICP10111_CMD_MEAS_ULN 0x7866 // 超低噪声模式。#define ICP10111_CMD_MEAS_LP 0x609C // 低功耗模式。#define ICP10111_CMD_MEAS_LN 0x70DF // 低噪声模式。#define ICP10111_CMD_MEAS_N 0x6825 // 正常模式。ICP10111_MODE_LN, // 低噪声。// 等待测量完成(根据模式不同等待时间不同)

zhusl6688的博客 417

stm32 vscode 编译_使用 VSCode 打造 STM32 开发环境

VSCode 应该是目前最流行的开发工具之一了。这篇文章记录了我在 linux 下,使用 VSCode 作为 STM32 开发环境的一些折腾过程。我使用的是 Ubuntu 18.04,使用其它发行版应该也没有任何问题,或者 windows。需要准备的原料有:VSCode + 官方 C/C++ 插件gcc-arm-none-eabimakeSTM32CubeMXjlink + 驱动前三项可通过 ap...

weixin_39637661的博客 1001

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【底层架构-06】Linux 下 STM32 编译环境搭建(GCC+OpenOCD+VSCode,附完整避坑指南)

本文详细介绍了在Linux系统下搭建STM32开发环境的完整流程。通过安装ARM GCC交叉编译工具链、OpenOCD烧录调试工具和STM32CubeMX代码生成工具,配合VSCode编辑器,实现从工程创建、编译到烧录调试的全流程开发。教程包含环境准备、工具安装、权限配置、工程编译、固件烧录等关键步骤,并提供了常见问题解决方案。这套开源免费的开发方案适用于STM32全系列芯片,支持Ubuntu/Debian等Linux发行版,可替代Keil MDK实现高效开发,特别适合嵌入式Linux和自动化编译场景。

1237

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

linux下vscode配置gcc,linux上搭建stm32开发环境 vscode+gcc+stm32cubeMX 和 vscode+platformIO

一、软件清单:VSCode:应用商店安装 或sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-makesudo apt-get updatesudo apt-get install ubuntu-makesudo umake web visual-studio-codearm-none-eabi-gcc:sudo apt-get install g...

weixin_30400859的博客 769

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: 从EVP_mdc2报错看openssl版本兼容性问题:WSL环境实战排坑记录
下一篇: 别再手动改错字了!用Word这个功能1分钟搞定万字文档校对
linux6sysadmin
博客等级 码龄4年 59粉丝 1615原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值