深度解析:STM32 MDK 工程 HEX 文件转 BIN 文件 —— 原理、方法、优缺点与实战指南(下)

5.2.4 AXF 文件缺失问题(原因 / 解决步骤)

AXF 文件是 MDK 编译的核心输出文件之一,若转换时提示 "Cannot open input file 'xxx.axf'",多因 AXF 文件未生成导致,具体原因及解决步骤如下:

原因 表现 解决步骤
工程配置未勾选 "生成 AXF 文件" Build Output 中无 "Creating xxx.axf" 日志,Objects/Output 目录无 AXF 文件 1. 打开 "Options for Target→Output" 标签页;2. 勾选 "Create Executable"(MDK v5)或 "Generate executable"(MDK v6);3. 确认 "Executable Name" 已填写(默认与工程名一致);4. 点击 "OK" 后重新编译工程
编译过程失败(无有效 AXF 文件) Build Output 中存在编译错误(如 "error: undefined reference to 'main'"),仅生成部分 OBJ 文件 1. 查看 Build Output 中的错误信息,定位编译失败原因(如代码语法错误、缺少库文件);2. 修复错误后,点击 "Rebuild" 重新编译;3. 编译成功后,确认 Objects/Output 目录生成 AXF 文件
输出目录配置错误 AXF 文件生成在非预期目录(如默认 Objects 目录被改为自定义目录) 1. 打开 "Options for Target→Output" 标签页,查看 "Output Directory" 配置;2. 确认转换命令中的输入文件路径与 "Output Directory" 一致;3. 若路径不一致,修改转换命令中的输入文件路径
5.2.5 编译后自动转换失败排查流程

当 MDK 编译成功但未生成 BIN 文件时,可按以下流程逐步排查:

  1. 查看 Build Output 日志

    • 若日志无转换相关信息:检查 "Options for Target→User" 标签页,是否勾选 "Run #1" 且命令非空;
    • 若日志提示 "'fromelf' 不是内部或外部命令":参考 5.2.1 配置环境变量或使用绝对路径;
    • 若日志提示 "Cannot open input file":确认输入文件(AXF/HEX)路径正确且文件存在。
  2. 验证工具可执行性 :打开 CMD,输入转换命令(如fromelf --bin -o test.bin test.axf),若执行失败,说明工具本身存在问题(如路径错误、版本不兼容)。

  3. 检查权限与路径

    • 确认输出目录有写入权限(如非系统盘目录);
    • 路径中无空格、中文等特殊字符,若有则加英文双引号。
  4. 重新配置并测试:简化转换命令(如使用默认 Objects 目录的 AXF 文件),重新编译后查看是否生成 BIN 文件。

5.3 命令行工具注意事项

5.3.1 环境变量未配置的解决方案

若命令行提示 "'fromelf' 不是内部或外部命令",且未配置环境变量,可通过以下方式解决:

  • 临时方案 :在命令中使用 fromelf.exe 的绝对路径,例如:

    bash

    运行

    复制代码
    "C:\Keil_v5\ARM\ARMCC\bin\fromelf.exe" --bin -o test.bin test.axf
  • 永久方案:按 3.1.2 步骤配置环境变量,确保工具可全局调用。

5.3.2 相对路径与绝对路径混用问题

当命令中同时使用相对路径和绝对路径时,可能因当前目录不一致导致文件找不到,例如:

bash

运行

复制代码
# 错误示例:输入文件用绝对路径,输出文件用相对路径,当前目录非输入文件所在目录
fromelf --bin -o ./test.bin "C:\Project\test.axf"

解决方法 :统一使用绝对路径,或确保命令行终端当前目录与相对路径基准目录一致(通过cd命令切换)。

5.3.3 多文件转换时的文件名冲突处理

批量转换多个文件时,若输出文件名重复(如多个工程均命名为test.bin),会导致文件被覆盖,解决方法:

  • 输出文件名包含工程名 / 芯片型号,例如: bash

    运行

    复制代码
    fromelf --bin -o ./Output/F103_test.bin ./Input/F103_test.axf
    fromelf --bin -o ./Output/L476_test.bin ./Input/L476_test.axf
  • 批量脚本中使用原文件名作为输出文件名(如 CMD 脚本中的%%~nf)。

5.3.4 命令行窗口编码导致的乱码问题

Windows CMD 默认编码为 GBK,若 HEX 文件编码为 UTF-8,可能出现乱码导致转换失败,解决方法:

  1. 打开 CMD,输入chcp 65001切换编码为 UTF-8;
  2. 用 Notepad++ 将 HEX 文件编码转换为 ANSI(兼容 GBK)。

5.4 第三方工具注意事项

5.4.1 工具版本选型(稳定版 / 最新版对比)
版本类型 优势 劣势 适配场景
稳定版(如 STM32CubeProgrammer V2.14) 经过大量测试,bug 少,兼容性强 缺少最新功能(如对 STM32U5 的新支持) 量产场景、对稳定性要求高的项目
最新版(如 STM32CubeProgrammer V2.18) 支持最新芯片 / 功能,修复旧版 bug 可能存在未发现的新 bug 开发最新 STM32 芯片(如 U5/G4)的项目
5.4.2 大文件转换(>100MB)的性能问题

转换大文件时,部分工具可能出现卡顿或崩溃,优化措施:

  • 选择内存占用低的工具(如 fromelf.exe、STM32CubeProgrammer);
  • 关闭其他占用内存的程序,释放系统资源;
  • 分块转换(若工具支持),再合并结果。
5.4.3 多格式支持的兼容性验证

使用第三方工具转换非标准 HEX 文件(如 Motorola S-record 格式)前,需验证工具兼容性:

  1. 用工具打开测试文件,查看是否能正常解析;
  2. 转换后用 WinHex 对比原文件数据,确保无丢失。
5.4.4 工具自带校验功能的启用与验证

部分工具(如 STM32CubeProgrammer)支持转换后自动校验,启用步骤:

  1. 转换时勾选 "Verify after conversion"(若有);
  2. 转换完成后,工具会提示 "Verification successful",确保数据无误。
5.4.5 绿色版 vs 安装版的选择与风险
版本类型 优势 风险 适配场景
绿色版(免安装) 无需安装,便携性强 可能缺少依赖库,功能不全,存在安全风险(如捆绑恶意软件) 临时转换、仅需基础功能的场景
安装版 功能完整,依赖库齐全,安全可靠 占用磁盘空间,安装耗时 长期使用、对功能 / 安全性要求高的场景

六、实战案例:STM32 开发中的 HEX 转 BIN 全流程

6.1 案例 1:单个 STM32F103 工程的快速转换(MDK 内置方法)

6.1.1 工程背景与需求
  • 工程:STM32F103C8T6 串口通信工程;
  • 需求:开发阶段快速生成 BIN 文件,用于 ST-Link 烧录测试;
  • 烧录工具:ST-Link Utility。
6.1.2 详细操作步骤
步骤 操作 注意点
1 打开 MDK 工程,点击 "魔法棒→Output",设置输出目录为./Output,勾选 "Create HEX File" 和 "Create Executable" 确保输出目录存在,避免路径错误
2 切换到 "User" 标签页,在 "After Build/Rebuild" 区域勾选 "Run #1",输入命令:fromelf --bin -o ./Output/F103_UART.bin ./Output/F103_UART.axf 命令中路径与 Output 目录一致
3 点击 "Rebuild" 重新编译工程 编译日志无错误,显示 "0 Error (s), 0 Warning (s)"
4 查看./Output目录,确认生成F103_UART.bin 文件大小约 8KB(与程序实际大小一致)
6.1.3 转换结果验证
  1. 文件大小验证:程序编译后 HEX 文件约 16KB,BIN 文件约 8KB,符合体积比例;
  2. 数据完整性验证:用 WinHex 打开 BIN 文件,查看复位向量表(首 4 字节为栈顶地址,次 4 字节为复位函数地址),与 HEX 文件一致;
  3. 烧录测试
    • 打开 ST-Link Utility,连接开发板;
    • 点击 "Open File" 选择 BIN 文件,设置起始地址为0x08000000
    • 点击 "Program & Verify",烧录完成后开发板正常运行串口通信功能。
6.1.4 常见问题与解决方案
  • 问题:烧录后程序无响应;
  • 原因:BIN 文件起始地址设置错误(如设为0x08008000);
  • 解决方案:重新烧录,将起始地址改为0x08000000

6.2 案例 2:多工程批量转换(命令行批处理脚本)

6.2.1 项目背景
  • 项目:10 个 STM32L476 电机驱动工程(量产阶段);
  • 需求:批量转换所有工程的 AXF 文件为 BIN,提升量产效率;
  • 工具:CMD 批处理脚本。
6.2.2 批处理脚本编写

bat

复制代码
@echo off
:: 批量转换脚本:STM32L476电机驱动工程
:: 工程根目录:C:\Projects\Motor_Driver
:: 输出目录:C:\Projects\Motor_Driver\Batch_Output

:: 创建输出目录
md "C:\Projects\Motor_Driver\Batch_Output" 2>nul

:: 定义工程列表(工程名)
set PROJECTS=Driver_1 Driver_2 Driver_3 Driver_4 Driver_5 Driver_6 Driver_7 Driver_8 Driver_9 Driver_10

:: 遍历工程批量转换
for %%p in (%PROJECTS%) do (
    set AXF_PATH="C:\Projects\Motor_Driver\%%p\Output\%%p.axf"
    set BIN_PATH="C:\Projects\Motor_Driver\Batch_Output\%%p.bin"
    
    echo 正在转换:%%p
    "C:\Keil_v5\ARM\ARMCC\bin\fromelf.exe" --bin -o !BIN_PATH! !AXF_PATH!
    
    :: 验证转换结果
    if exist !BIN_PATH! (
        echo 转换成功:!BIN_PATH! >> Batch_Log.txt
    ) else (
        echo 转换失败:!AXF_PATH! >> Batch_Log.txt
    )
)

echo 批量转换完成!日志文件:Batch_Log.txt
pause
6.2.3 脚本执行与结果验证
  1. 将脚本保存为Batch_Convert.bat,双击运行;
  2. 执行完成后,Batch_Output目录生成 10 个 BIN 文件;
  3. 查看Batch_Log.txt,确认所有工程转换成功。
6.2.4 脚本优化
  • 错误捕获 :添加if %errorlevel% neq 0捕获转换错误,自动重试 1 次;
  • 日志输出 :记录转换时间(用%date% %time%);
  • 自动重跑:若转换失败,脚本自动重新执行该工程的转换命令。

6.3 案例 3:无 MDK 环境的转换(第三方工具 STM32CubeProgrammer)

6.3.1 场景背景
  • 场景:测试团队无 MDK 开发环境,需将开发团队提供的 HEX 文件转换为 BIN;
  • 工具:STM32CubeProgrammer V2.16。
6.3.2 工具安装与配置
  1. 从 ST 官网下载 STM32CubeProgrammer,安装时勾选 "USB Driver";
  2. 打开工具,选择 "English"(避免中文乱码)。
6.3.3 转换步骤与参数设置
  1. 切换到 "Convert" 标签页;
  2. "Input file" 选择开发团队提供的STM32_H7_APP.hex
  3. "Output file" 设置为C:\Test\STM32_H7_APP.bin
  4. "Output format" 选择 "Binary (.bin)";
  5. "Start address" 设置为0x08000000(STM32 FLASH 起始地址);
  6. 点击 "Convert",提示 "Conversion successful"。
6.3.4 转换后烧录验证
  1. 连接 STM32H7 开发板与电脑(USB 转串口);
  2. 切换到 STM32CubeProgrammer 的 "Connect" 标签页,选择 "UART",设置波特率为 115200;
  3. 点击 "Connect",连接成功后点击 "Program";
  4. 选择生成的 BIN 文件,设置起始地址为0x08000000,点击 "Start Programming";
  5. 烧录完成后,开发板正常运行 APP 功能。

6.4 案例 4:大文件转换(200MB HEX 文件转 BIN)

6.4.1 场景背景
  • 工程:STM32H743 存储密集型工程(包含大量固件数据);
  • 需求:转换 200MB HEX 文件为 BIN,用于量产烧录;
  • 约束:转换时间≤5 分钟,内存占用≤2GB。
6.4.2 工具选型与性能对比
工具 转换时间 内存占用 稳定性
fromelf.exe(MDK v6) 2 分 10 秒 800MB 稳定,无崩溃
STM32CubeProgrammer V2.18 3 分 30 秒 1.2GB 稳定,支持断点续转
WinHex V20.8 4 分 50 秒 1.8GB 大文件打开卡顿,转换较慢
6.4.3 转换过程中的优化措施
  1. 选择 fromelf.exe 作为转换工具,使用绝对路径命令: bash

    运行

    复制代码
    "C:\Keil_v5\ARM\ARMCLANG\bin\fromelf.exe" --bin -o C:\Output\H7_Large.bin C:\Input\H7_Large.hex
  2. 关闭其他程序,释放系统内存;

  3. 转换前清理输出目录,确保磁盘空间≥500MB。

6.4.4 转换后数据完整性校验
  1. 计算 BIN 文件的 CRC32 值(用 WinHex 的 "Tools→Checksum→CRC32");
  2. 与原 HEX 文件的 CRC32 值对比,两者一致则验证通过;
  3. 随机抽取 10 处地址,对比 BIN 文件与 HEX 文件的数据,确保无篡改。

七、进阶技巧:HEX 转 BIN 的优化与扩展应用

7.1 自定义 BIN 文件起始地址(适配 STM32 FLASH 分区)

7.1.1 地址配置原理

STM32 FLASH 通常分为 "Bootloader 区" 和 "APP 区",例如:

  • Bootloader 区:0x08000000-0x08007FFF(32KB);
  • APP 区:0x08008000-0x080FFFFF(960KB)。转换 APP 的 HEX 文件时,需将 BIN 文件的起始地址设为0x08008000,避免覆盖 Bootloader。
7.1.2 fromelf 参数配置(--base)

使用--base参数指定 BIN 文件的起始地址,例如:

bash

运行

复制代码
fromelf --bin --base 0x08008000 -o ./APP.bin ./APP.axf

说明--base会强制 BIN 文件的起始地址为指定值,数据按该地址排列。

7.1.3 实战示例
  1. 工程:STM32F407 APP 工程;

  2. 转换命令: bash

    运行

    复制代码
    fromelf --bin --base 0x08008000 -o ./F407_APP.bin ./F407_APP.axf
  3. 烧录:将 BIN 文件烧录到0x08008000地址,Bootloader 可正常跳转至 APP。

7.2 BIN 文件冗余数据裁剪(节省 FLASH 空间)

7.2.1 冗余数据产生原因

HEX 文件地址碎片化(如跳过部分地址)会导致 BIN 文件填充大量0x00,例如:

  • HEX 文件包含0x08000000-0x080000FF0x08000200-0x080002FF的数据;
  • 转换后 BIN 文件会填充0x08000100-0x080001FF0x00,增加冗余。
7.2.2 裁剪工具与方法(Python 脚本)

编写 Python 脚本裁剪冗余0x00

python

运行

复制代码
def trim_bin(input_path, output_path):
    with open(input_path, 'rb') as f:
        data = f.read()
    
    # 去掉末尾连续的0x00
    trimmed_data = data.rstrip(b'\x00')
    
    # 去掉中间连续的0x00(可选,需确认地址不影响程序)
    # trimmed_data = trimmed_data.replace(b'\x00'*1024, b'')  # 去掉连续1024个0x00
    
    with open(output_path, 'wb') as f:
        f.write(trimmed_data)

# 调用函数
trim_bin('./Input/L476.bin', './Output/L476_trimmed.bin')
7.2.3 裁剪后的验证
  1. 对比裁剪前后的文件大小:原文件 128KB,裁剪后 96KB,节省 25% 空间;
  2. 烧录裁剪后的 BIN 文件,测试程序功能正常(无地址访问错误)。

7.3 转换过程中的数据校验(确保转换无误)

7.3.1 CRC32 校验原理与实现

CRC32 是一种常用的校验算法,可快速验证文件完整性。使用 Python 实现 CRC32 计算:

python

运行

复制代码
import zlib

def calculate_crc32(file_path):
    with open(file_path, 'rb') as f:
        data = f.read()
    return zlib.crc32(data)

# 计算HEX和BIN文件的CRC32
hex_crc = calculate_crc32('./Input/F103.hex')
bin_crc = calculate_crc32('./Output/F103.bin')

if hex_crc == bin_crc:
    print("数据校验通过!")
else:
    print("数据校验失败,转换有误!")
7.3.2 量产场景下的校验自动化

在批量转换脚本中添加 CRC32 校验:

bat

复制代码
:: 转换后计算CRC32
for %%p in (%PROJECTS%) do (
    :: 转换命令(略)
    :: 计算CRC32(需提前安装crc32工具)
    crc32 "C:\Projects\Motor_Driver\Batch_Output\%%p.bin" >> "C:\Projects\Motor_Driver\Batch_Output\%%p.crc"
)

7.4 多 HEX 文件合并为单个 BIN 文件(复杂工程适配)

7.4.1 合并原理

将 Bootloader 和 APP 的 HEX 文件合并为单个 BIN 文件,需确保地址不重叠:

  • Bootloader HEX:0x08000000-0x08007FFF
  • APP HEX:0x08008000-0x080FFFFF
  • 合并后 BIN 文件包含两个区域的数据,地址连续。
7.4.2 实战示例(fromelf + 批处理)
  1. 转换 Bootloader HEX 为 BIN: bash

    运行

    复制代码
    fromelf --bin --base 0x08000000 -o ./Bootloader.bin ./Bootloader.hex
  2. 转换 APP HEX 为 BIN: bash

    运行

    复制代码
    fromelf --bin --base 0x08008000 -o ./APP.bin ./APP.hex
  3. 合并两个 BIN 文件(Python 脚本): python

    运行

    复制代码
    def merge_bin(file1, file2, output):
        with open(file1, 'rb') as f1, open(file2, 'rb') as f2:
            data1 = f1.read()
            data2 = f2.read()
        # 填充Bootloader和APP之间的地址(若有)
        padding = b'\x00' * (0x08008000 - 0x08000000 - len(data1))
        merged_data = data1 + padding + data2
        with open(output, 'wb') as f:
            f.write(merged_data)

merge_bin('./Bootloader.bin', './APP.bin', './Full_Firmware.bin')

plaintext

复制代码
### 7.5 跨平台转换方案(Windows/Linux/macOS)
#### 7.5.1 Linux下的转换工具(objcopy)
1. 安装GCC工具链:
   ```bash
   sudo apt-get install gcc-arm-none-eabi
  1. 转换 HEX 为 BIN: bash

    运行

    复制代码
    arm-none-eabi-objcopy -I ihex ./Input/F103.hex -O binary ./Output/F103.bin
7.5.2 macOS 下的转换工具(Homebrew)
  1. 安装 Homebrew: bash

    运行

    复制代码
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  2. 安装 fromelf: bash

    运行

    复制代码
    brew install arm-none-eabi-gcc
  3. 转换命令: bash

    运行

    复制代码
    arm-none-eabi-objcopy -I ihex ./Input/F103.hex -O binary ./Output/F103.bin
7.5.3 跨平台脚本编写(Shell 脚本)

bash

运行

复制代码
#!/bin/bash
# 跨平台转换脚本
INPUT_HEX="./Input/STM32.hex"
OUTPUT_BIN="./Output/STM32.bin"

if [[ "$(uname)" == "Windows_NT" ]]; then
    # Windows:使用fromelf
    fromelf --bin -o $OUTPUT_BIN $INPUT_HEX
elif [[ "$(uname)" == "Linux" || "$(uname)" == "Darwin" ]]; then
    # Linux/macOS:使用objcopy
    arm-none-eabi-objcopy -I ihex $INPUT_HEX -O binary $OUTPUT_BIN
fi

echo "转换完成:$OUTPUT_BIN"

八、常见问题与故障排除大全

8.1 转换失败类问题

问题现象 可能原因 排查步骤 解决方案
提示 "文件不存在" 1. 输入 / 输出路径错误;2. 文件被删除 / 移动 1. 核对路径是否正确;2. 确认文件存在于指定目录 1. 修正路径;2. 恢复文件到指定目录
提示 "权限不足" 1. 无读取输入文件权限;2. 无写入输出目录权限 1. 检查文件 / 目录权限;2. 以管理员身份运行工具 1. 添加读取 / 写入权限;2. 用管理员身份执行命令
转换后文件大小为 0 1. 输入文件无有效数据;2. 地址映射错误 1. 查看 HEX 文件是否包含数据记录;2. 检查扩展地址记录是否正确 1. 重新编译生成有效 HEX 文件;2. 修正扩展地址记录
工具崩溃退出 1. 工具版本不兼容;2. 大文件转换内存不足 1. 更换稳定版工具;2. 释放系统内存 1. 降级 / 升级工具版本;2. 关闭其他程序后重试

8.2 转换后文件异常类问题

问题现象 可能原因 排查步骤 解决方案
BIN 文件大小异常 1. 地址碎片化导致填充过多 0x00;2. 起始地址设置错误 1. 查看 HEX 文件地址是否连续;2. 核对起始地址参数 1. 裁剪冗余数据;2. 修正起始地址
烧录后程序无法运行 1. BIN 文件起始地址错误;2. 数据丢失 / 篡改 1. 确认烧录起始地址为 0x08000000;2. 校验 BIN 与 HEX 文件数据 1. 重新烧录并设置正确地址;2. 重新转换并校验
程序功能异常 1. 转换时地址偏移错误;2. 冗余数据裁剪过度 1. 核对转换命令的 --offset 参数;2. 检查裁剪后的地址是否完整 1. 修正地址偏移;2. 恢复裁剪的必要数据

8.3 工具兼容类问题

问题现象 可能原因 排查步骤 解决方案
MDK v6 中 fromelf 路径找不到 1. 未安装 ARMCLANG 编译器;2. 路径错误 1. 检查 Pack Installer 中是否安装 ARM Compiler 6;2. 核实路径为ARMCLANG/bin 1. 安装 ARM Compiler 6;2. 使用正确路径调用工具
第三方工具不支持大文件 1. 工具内存限制;2. 版本过旧 1. 查看工具文档的文件大小限制;2. 升级工具到最新版 1. 分块转换后合并;2. 更换支持大文件的工具
Linux 下转换中文路径失败 1. 工具不支持中文编码;2. 路径包含特殊字符 1. 查看工具编码支持;2. 核对路径字符 1. 将路径改为英文;2. 去掉特殊字符

九、工具选型指南与未来趋势

9.1 工具选型维度(表格)

选型维度 权重 评估标准
功能需求 40% 支持 HEX→BIN、批量转换、地址自定义
兼容性 25% 支持 STM32 全系列、多系统、大文件
易用性 20% 可视化界面、操作步骤≤3 步、拖放支持
稳定性 10% 转换成功率≥99%、无数据篡改
成本 5% 开源免费、无广告

9.2 不同场景下的工具推荐

应用场景 推荐工具 推荐理由
开发阶段(单工程) MDK 内置 fromelf.exe 一键转换,无需额外工具
测试阶段(无 MDK) STM32CubeProgrammer 官方工具,转换 + 烧录一体化
量产阶段(批量转换) 批处理脚本 + fromelf.exe 自动化程度高,效率快
进阶场景(数据编辑) WinHex 支持数据修改与校验

9.3 嵌入式文件格式转换的未来趋势

  1. 自动化与集成化:IDE(如 MDK、STM32CubeIDE)内置更智能的转换功能,支持自动合并、校验、裁剪;
  2. 智能化校验:AI 辅助检测转换异常(如地址错误、数据丢失),提前预警;
  3. 轻量化工具:工具体积更小(<10MB),转换速度提升 50%;
  4. 多格式兼容:支持更多嵌入式文件格式(如 SREC、ELF)的互转。

十、总结与学习资源推荐

10.1 核心知识点总结

  • HEX 是 ASCII 文本文件,含地址 / 校验;BIN 是纯二进制文件,体积小、烧录快;
  • 转换方法:MDK 内置 fromelf(推荐)、命令行、第三方工具;
  • 关键注意事项:路径规范、地址正确、数据校验。

10.2 学习资源推荐

  • 官方文档:Keil MDK 帮助文档、STM32CubeProgrammer 用户手册;
  • 技术博客:CSDN 嵌入式板块、知乎 "嵌入式开发" 专栏;
  • 开源项目:GitHub 上的 hex2bin 脚本、STM32 固件工具库。
相关推荐
无人装备硬件开发爱好者3 小时前
深度解析:STM32 MDK 工程 HEX 文件转 BIN 文件 —— 原理、方法、优缺点与实战指南(上)
stm32·嵌入式硬件·hex2bin
youcans_4 小时前
【动手学电机驱动】 STM32-FOC(11)ST MCSDK6.0 电机控制软件框架
stm32·单片机·嵌入式硬件·foc·电机驱动
沐欣工作室_lvyiyi5 小时前
基于单片机的垃圾容量监测与语音交互系统设计(论文+源码)
stm32·单片机·嵌入式硬件·垃圾桶
rechol5 小时前
mcu启动流程
stm32·单片机·mcu·嵌入式
啊森要自信6 小时前
【C语言】 C语言文件操作
c语言·开发语言·汇编·stm32·单片机
1+2单片机电子设计7 小时前
基于 STM32 的数控 BUCK-BOOST 升降压电源设计
stm32·单片机·嵌入式硬件
易水寒陈7 小时前
解析器模式,解析不同协议
stm32·单片机
1379号监听员_8 小时前
PID定速/定位置控制电机
stm32·单片机
SystickInt9 小时前
32 LCD显示(FSMC应用)-寄存器
stm32·单片机·嵌入式硬件