自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(90)
  • 资源 (13)
  • 收藏
  • 关注

原创 STM32H5 的 PB14 引脚被意外拉低的问题解析

摘要:STM32H523RET6应用中配置PC9为输出、PB14为输入时,发现PC9输出高电平时PB14被意外拉低。经分析,这是由于STM32H5默认激活了UCPD的Dead Battery功能,当PC9(复用为UCPD1_DBCC2引脚)电压超过1V时,会激活内部下拉电阻将PB14拉低。解决方案包括在代码中禁用DB功能(HAL_PWREx_DisableUCPDDeadBattery()),并建议在PC9外接100K下拉电阻。该问题在STM32G0中可通过CubeMX配置,而STM32H5的CubeMX版

2025-10-22 14:42:46 1281

原创 KEIL 环境下 printf 导致程序无法执行的解决方案

摘要:在MDK Keil环境下调用printf函数导致程序卡在BKPT指令的问题,是由于未启用MicroLIB时默认使用Semihosting机制与调试器交互所致。解决方法包括:1)启用CMSIS-Compiler CORE组件;2)将STDOUT设置为Custom选项并实现用户接口;3)重新编译后程序即可正常运行。该方法避免了Semihosting依赖,适用于无法使用MicroLIB的场景。

2025-10-22 14:41:32 1031

原创 STM32N6 平台如何使用 MCO2 输出 Clock

STM32N6 是 ST 第一款带 NPU 的基于 Cortex-M55 内核的 MCU,在 STM32N6 开发过程中,有客户遇到 MCO2 无输出问题,他们使用 24MHz 外部晶振,使用 RCC HAL API HAL_RCC_MCOConfig 设置 MCO2 输出,参数选择 RCC_MCO2, RCC_MCO2SOURCE_HSE, RCC_MCODIV_1,期待获得 24MHz 输出波形,但 MCO2 管脚一直没有输出。这里,我们发现 MCO2 (PC9) 管脚是由 VDDIO4 独立供电的。

2025-04-17 14:00:10 899

原创 STM32CubeIDE 实用技巧之条件断点的妙用

在嵌入式项目中,我们经常会碰到各种各样的异常和故障,比如客户说,某个问题可能需要一天,一周,甚至以月为周期才能复现一次问题。诸如此类问题,着实令工程师苦恼,因为很难去捕获信息来分析和复现问题,这里给大家分享一些我的经验和技巧。

2025-04-17 09:40:39 1835 1

原创 两个 STM32G0 I2C 通信异常的案例分析

后面让客户用示波器抓取 SCL 波形,并且建议在 I2C GPIO 配置为开漏模式时测量上升沿上升的时间,如下图三,在上拉电阻为 4.7K 时,Rise time 是 180ns 左右,符合规格书要求。但问题是功耗变大,客户不接受改小上拉电阻。如上图寄存器状态看,确实是发生了 BERR 错误,并且示波器抓的图形看,发现最后一个NACK 的上升沿变化时,SCL 看起来是为高的。进一步的分析是看谁把 SDA 的电平拉低,建议客户在 SCL,SDA 线路接电阻测量出问题时,I2C 主从两端的电压变化。

2025-04-16 11:42:54 2305

原创 Cortex-M核除0操作的报错机制话题

除 0 操作属于错误操作,在 ARM Cortex M 平台上会有相应的报错机制。但这边会涉及到整型数的除 0 以及浮点数的除 0,另外还会涉及错误产生后的报错机制,是中断还是错误位,本文会对这个报错机制加以说明。使用 STM32H723 做为测试芯片。

2025-04-16 11:08:55 444

原创 如何通过DMA配合CRC功能

STM32 的 CRC 外设是用来实现 CRC 计算的硬件单元,硬件实现 CRC 计算相对于软件算法实现来说,可以大大提高运算速度。CRC 计算单元具有单个 32 位读/写数据寄存器(CRC_DR)。它用于输入新数据(写访问)并保存以前的 CRC 计算结果(读访问)。当 DMA用作数据传输处理器时,可以极大地减轻 CPU 负荷。本文以 STM32G474 为例,介绍如何通过 DMA 配合 CRC 计算,以供读者参考。

2025-04-15 14:13:00 1384

原创 STM32C0 HAL 库的 SPI 驱动导致的 Hardfault 问题分析

在项目开发中使用 STM32C071 作为主控 MCU,驱动代码使用了版本STM32Cube_FW_C0_V1.2.0,应用程序调用 SPI HAL API 与 NFC 模块通信,SPI 工作在Master 模式,调用 HAL_SPI_Transmit 函数发送数据的时候,出现 Hardfault 现象,同时客户反馈同样的应用程序代码在 STM32G0 平台上,没有出现类似的问题,客户不得其解。根据客户反馈的现象,本文分析其原因以及解决方法。

2025-04-15 08:40:25 947

原创 SPI 传输长度超过 1024 时出现异常的问题分析

使用 STM32U595QII6Q 开发产品时发现,使用该芯片的 SPI3 与对方通信时,如果发送的数据超过 1024 字节时,SPI3 作为主设备,使用 HAL 库的 SPI 相关发送函数,发送完成回调函数不会执行。因为依据手册,对于 SPI3,最大支持的长度为 1023 字节,而 1024 字节超过了最大长度,因此设置失败。单步调试发现,在函数 HAL_SPI_TransmitReceive_DMA,执行以下代码片段时,修改 CR2 寄存器失败,因此 CR2 的值一直未 0。

2025-04-14 13:50:52 641

原创 STM32G0 单线串口通信帧错误问题解析

所以在这个单线串口的设计中,STM32G0 要保持和 STM32L433 的配置一致,也就是上面提到的 GPIO 下拉,TX,RX 通过软件切换并且 TX,RX 电平反向。客户的答复是这是保留上一代产品的设计,新一代的产品设计只是因为成本,将两颗 MCU中的一颗 MCU 更换为了 STM32G0,而原来 STM32L433 上的软件是不能更改的。对于客户奇怪的单线串口设计,我们首先的疑问是为什么不直接使用参考手册提供的现成的单线串口半双工通信方法,而是要自己去实现一套软件切 TX,RX 的单线半双工通信。

2025-04-14 13:39:27 1527

原创 高精度定时器如何实现 PWM 零满占空比的连续切换

在《高精度定时器如何输出零占空比与满占空比 PWM 波形》一文中,我们分享了在高精度定时器中 PWM 输出零占空比和满占空比的方法,但是在实际的应用中还会存在零占空比和满占空比连续切换的情况,在原有的 PWM 发波方式上,若是采样 up-down count 模式的话要实现这种连续切换会存在一些问题,本文将分析相关问题,并给出更加合适的方案来实现 PWM 零-满占空比的连续切换。

2025-04-11 09:02:58 1114

原创 在 STM32 中实现电机测速的方法介绍

在电机控制类应用中,经常会需要对电机转速进行检测,测速常用的方式有 M 法测速和 T法测速。M 法测速是利用在规定时间 Ts 内编码器输出脉冲数量 M1 计算电机转速,如下图所示,信号 A 和 B 为正交编码器的输出信号,C 解码后的计数脉冲(4x)。单位时间(1s)内编码器输出脉冲数量,即脉冲频率:𝑓𝑐 = 𝑀1⁄𝑇𝑠假设电机每旋转一圈正交编码器(4x)的输出脉冲数量为 Z,则电机转速为:r/min 代表圈/分钟。

2025-04-11 08:53:40 2766

原创 奇怪的 NRST 管脚异常复位问题

MCU 内部是远比 MCU 外部电路更复杂的微电子电路,内部线路间距小,不同功能间可能只是由电子开关或多路复用器做选择,当高频干扰进入 MCU 后,干扰可以在看似不直接相连的电路间耦合而影响 MCU 的正常工作。重要的是避免干扰进入 MCU。在排查干扰传递的路径时,不要将目光局限于直接相连的电路或管脚。

2024-04-19 15:48:34 2081

原创 简谈 BlueNRG-LP 和-LPS 的代码空间优化

Linker 中可定义一些宏、用于指定链接脚本文件所需的配置。这些宏定义不作用于.c文件或者.h文件,只作用于链接文件(.icf 或者.sct 或者 *.ld)。SDK 中默认提供了 4 种默认配置的协议栈加一种自定义的协议栈配置(BLE_STACK_CUSTOM_CONF),如下图所示。上述 5 种不同协议栈的配置,本质上就是通过使用宏控制不同的特性功能是否打开。只是前面 4种提供了默认便捷的设置,而最后一种可以进行细粒度更细的自定义的协议栈。

2024-04-19 14:44:51 1263

原创 关于蓝牙连接参数更新进程后导致断连的问题分析

通常客户在做低功耗蓝牙模块设计的时候,如果蓝牙模块在实际使用场景中和手持移动设备(如手机等)绑定使用的话,往往会非常注意蓝牙模块与不同品牌、不同型号的手机的兼容性测试。这些测试项目可能包括长时间连接状态的保持,频繁建立连接,或主动断连后再次建立连接等场景。

2024-04-18 16:20:50 1378

原创 BlueNRG-X 原理图参数说明

为了让客户在原理图设计阶段少走弯路,我这里结合客户评估和设计阶段常遇到的问题,整理了一下 BlueNRG-1/-2 相关设计及注意事项以备客户解惑用。

2024-04-18 16:12:00 1191

原创 STM32芯片软复位导致SRAM2的值被擦除话题

客户在使用 STM32L433CCY6 开发过程中,出现软件复位后 SRAM2 里的值被擦除问题。

2024-04-16 14:05:49 1399

原创 程序运行在 STM32H750 的外扩 FLASH 上两小时后死机

客户使用 STM32H750VBT6,通过 QSPI 外扩了一个 4M 的 NOR FLASH,采用memory map 模式。当程序跳转运行到外设 FLASH 后,大约两个小时后程序死机。客户使用的 IDE 是 KEIL,此问题可以固定重现。在 KEIL 调试模式下重现问题时,通过多次观察发现,程序死的位置总体上会停在两个位置,并不是同一个位置。一个是 TIM15函数的入口;另一个是进入中断函数后的一个赋值语句。

2024-04-16 09:01:39 2390

原创 STM32 SPI NSS 功能的灵活应用案例

某客户开发一款高精度工业测量仪器,打算使用 STM32H7+外置高精度 ADC 采样的分离方案来实现。客户选取了一款所属行业内比较通用的 ADC 采样芯片。在读取该 ADC芯片手册后,客户发现该款 ADC 采样芯片使用 MCU 标准 SPI 与之通信存在问题,手册里面也推荐使用 DSP/FPGA 的来实现,客户一下就犯难了。为了降低成本和开发周期,客户想使用 MCU 来替代 DSP/FPGA 与 ADC 采样芯片的高速通信。

2024-04-15 11:36:55 1369

原创 通过 LSE 校准 HSI 偏差大的问题解决

某客户使用 STM8AL 时,由于设计限制需使用 HSI 作为系统时钟。为减小 HSI 偏差,使用 LSE 对其进行校准。小批量试产发现 3%左右产品校准后频率和 16MHz 偏差较大。

2024-04-15 11:26:10 949

原创 如何理解 RAMECC FAR 寄存器的值

某客户测试 STM32H753xi 板子上的 ECC 功能,用于监控 AXI-SRAM 区域,但不是很明白 RAMECC FAR 寄存器在 RM0433 中的描述, “Bits 31:0 FADD[31:0]: ECC error failing address”。比如在 AXI-SRAM 中,如果客户示例显示的是 FAR = 0x2004,但是这个地址值 0x2004 并不在 AXI-SRAM 范围之内,客户该如何理解 FAR 寄存器?

2024-04-13 14:22:22 1108

原创 关闭 SPI 会导致 WRPERR 错误的问题分析

在 STM32 的应用中,SPI 算是用的比较多的外设了,也是单片机最常见外设之一。客户说它执行了关闭 SPI 的代码,竟然会导致 Flash 中的 WRPERR 标志置位,致使应用碰到一些问题。这就奇怪了,SPI 和内部 Flash 看起来是风马牛不相及的事情,为什么会发生这种事呢?一起来看看吧。

2024-04-13 14:01:52 1309

原创 高精度定时器中 single-shot 计数模式不工作

客户使用 STM32G474 的高精度定时器,基于 CubeMX 进行外设配置与代码生成,将某个子定时器的计数方式设置为 retriggerable single shot 方式,发现该子定时器无 PWM 输出,在调试模式下发现该子定时器的计数器一直为 0,即计数器一直没有启动,但如果将计数方式修改为continuous 模式,其他保持不变,定时器工作正常。

2024-04-12 20:04:09 1183

原创 STM32 DCMI 的带宽与性能介绍

随着市场对更高图像质量的需求不断增加,成像技术持续发展,各种新兴技术(例如3D、计算、运动和红外线)的不断涌现。如今的成像应用对高质量、易用性、能耗效率、高集成度、快速上市和成本效益提出了全面要求。为了满足这些要求,STM32 MCU 内置的数字照相机接口(DCMI),能够高效连接并行照相机模块。对于使用 STM32 DCMI 开发相机应用的客户,经常有以下问题:STM32 DCMI 最大支持的像素时钟是多少?STM32F4/F7/H7/U5 能支持 1280×720 的相机分辨率吗?最大的帧率是多少?

2024-04-12 18:27:50 2021

原创 在 Keil 中使用 STM32CubeProgrammer

STM32 MCU 新产品的早期用户有时候会遇见工具链还在完善中的情形,例如,一部分STM32 工具已经支持该产品,而另外一部分 STM32 工具还在更新中。具体到 Keil 用户,用户有可能可以使用 STM32CubeProgrammer 进行下载,但是 Keil 编译器中支持该产品系列的软件 Pack 还需要一些时间才会被更新。从而,用户能够使用 Keil 编译器进行编译甚至调试,但没法直接在 Keil 环境中对新产品进行下载。

2024-04-12 11:20:47 1405

原创 TouchGFX 控件附加 ClickListener 功能的方法介绍

模板一般分为函数模板和类模板。函数模板我们这里不做赘述,重点关注 TouchGFX Mixins 类模板。TouchGFX 的 Mixins 类模板用于拓展控件的功能,目前 TouchGFX v4.20.0 中有四个 Mixin 功能,分别是 Draggable、ClickListener、FadeAnimator 和MoveAnimator,分别为控件增添相关功能。如图 1 (TouchGFX Designer Mixins 功能)所示,本文主要针对 ClickListener 做具体介绍。

2024-04-12 09:21:55 1058

原创 使用 NANOEDGE.AI 工具完成人体姿态识别应用

NanoEdge™ AI 库是 Cartesiam 推出的人工智能静态库,它可以帮助客户直接生成可以运行在嵌入式 Arm Cortex 处理器上的.a 静态库文件。2021 年 ST 收购 Cartesiam,完善了 ST 在 AI 领域的生态,大大降低了客户使用 STM32 开发 AI 应用的难度。通过使用 NanoEdge AI Studio,用户只需要了解基本的 AI 概念,并提供相应的数据,便可以从众多 AI 算法库中智能搜索和生成出最符合用户应用的算法。

2024-04-11 11:13:24 2883 1

原创 通过 KEIL 制作 QSPI 接口的外部 Flash 下载算法

随着用户的应用越来越复杂以及 GUI 等需要大存储空间的需求越来越多,很多时候我们需要将代码或数据放在外扩的 Flash 存储空间。但是这样存在一个外部 Flash 烧写的问题,尤其是在应用调试时,需要将代码或数据烧录到外部 Flash。如果调试工具不能够一键烧录,势必会给调试带来诸多的麻烦。本文以 STM32H750 芯片为例,介绍通过 KEIL制作 QSPI 接口的外部 Flash 下载算法的方法。

2024-04-11 08:43:47 2320 1

原创 BlueNRG系列芯片Flash操作与BLE事件的互斥处理

在许多基于 BlueNRG-1/2 系列芯片的低功耗蓝牙的设计项目时,客户通常会在 Flash的特定区域存储定制的数据。然而需要特别注意的是,在 BlueNRG-1/2 方案中,用户对Flash 的读写操作必须在射频空闲的情况下进行,两者是互斥的关系。

2024-04-10 14:31:22 1515

原创 Arm-v7-M 架构的 STM32 如何启用 DWT 计数

客户在使用 STM32H7 的时候,想要使用 DWT 计数来测量代码执行时间,评估执行效率。客户发现在重新上电或 reset 后,无法启用 DWT 进行计数。

2024-04-10 13:42:30 710

原创 如何选择和设置外部晶体适配 BlueNRG-X

鉴于经常有客户对如何选择外部低速晶体,如何测试外部 32khz 时钟,如何直接使用外部32khz 信号源 以及 如何选择外部高速晶体,如何测试和校准频偏存在诸多困惑,我整理了该文档以备解惑用。

2024-04-09 09:14:43 1138

原创 关于 BlueNRG-2 在低功耗模式下的端口保持

BlueNRG-2 作为一款高性能低成本的低功耗蓝牙 SoC 解决方案,实现了在有限的资源下兼容蓝牙 5.2 协议的功能。客户在使用 BlueNRG-2 芯片设计产品时,通常会将其当作方案中的主控芯片来用,控制外围器件,最常见的应用就是使用 GPIO 输出高低电平控制外部器件或作为某些器件的开关使能信号,本文讨论下 BlueNRG-2 在低功耗模式下,客户关于 GPIO 口使用上的一些常见问题。

2024-04-09 09:13:59 852

原创 BlueNRG-X 如何实现外部天线和 PA 的控制

BlueNRG-1 提供了 ANATEST1(用于 QFN32 封装(PIN 14)和 WCSP34 封装(PIN D4)), 它可以提醒未来的发送或接收事件。对于其它GPIO 的使用,在原理图设计阶段也需要关注表中在低功耗模式下的默认值。关于外加 PA 的实现,本文以 RFX2401C 和 RT201 为例进行硬件和软件配置的说明;关于 WIFI 和 BLE 共用一个天线,本文以 BlueNRG-1 为例进行硬件和软件配置的说明,希望通过以上的例子能够给客户在相关应用场景的设计提供一个参考。

2024-04-08 13:48:03 1876

原创 PWM 脉宽跟随方案介绍

数字电源产品在使用桥式电路拓扑或是多路交错控制中,有时会需要滞后臂的 PWM 脉宽严格跟随超前臂的 PWM 脉宽,或从路的 PWM 脉宽严格跟随主路的 PWM 脉宽,本文将介绍如何利用高精度定时器实现 PWM 输出脉宽跟随,一种使用 Push-pull + Balance Idle + Auto Enable 方式,一种是使用 Auto Delay 方式。

2024-04-08 09:13:52 1264

原创 S2-LP 的 FIFO 机制

众所周知,S2-LP 拥有两个数据 FIFO,一个用于数据传送,另外一个用于数据接收,它们各自的长度均为 128 字节。针对普通的小数据量而言,128 字节长度的 FIFO 基本上可以满足大部分应用。但是,随着应用越来越复杂以及对数据量的需求越来越大,128 字节就不够用了,此时就需要对 FIFO 进行管控,才能接收或者发送更多的数据。本文将详细介绍 S2-LP 针对大数量场景时的 FIFO 机制。

2024-04-07 14:28:03 1297

原创 基于 S2-LP 实现 802.15.4g 帧格式的数据透传

S2-LP 硬件上支持 802.15.4g 的帧格式,但是现有的 SDK 包并没有基于该帧格式的示例工程,因此本篇文章将介绍如何实现基于 802.15.4g 帧格式的数据透传。

2024-04-07 14:27:23 1266

原创 如何将普通应用更改为 OTA APP

BlueNRG-LP 方案中提供了 2 种 OTA 的软件框架,分别是 OTA Reset Manager 框架和OTA Service Manager 框架。不同框架下程序在 Flash 的分别位置和区域图 1 所示。图1. OTA 软件升级框架Reset Manager,负责程序的跳转,根据有效标志选择执行 Higher APP 还是 LowerAPP。Higher APP 和 Lower APP 是客户不同版本的应用程序,同一时间运行其后一个升级的版本。

2024-04-06 08:54:26 1159

原创 关于 STM32WL LSE 添加反馈电阻后无法起振问题

客户调试 STM32WLE5JB 样机的时候遇到这样一个问题:在调试 LPUART,不打开外部时钟的时候,能够正常打印,若开启外部的 HSE 和 LSE 后就没有打印。

2024-04-06 08:31:00 1136

原创 巧用 STM32CubeIDE 之编译警告

编译警告对于工程师们来说,是再常见不过的了。对于严谨的工程师们来说,任何warning 都是不可忽视的。

2024-04-06 08:23:11 1450

原创 AFCI 应用笔记三、使用 mlflow 管理模型

超参数的选择不是一件容易的事情,需要大量的实验以得到稳定可靠的结论。模型实验对数据的质量要求很高,稳定可靠的数据才能得到可靠的结论,否则实际部署会存在较大差异。从文中图中可以看到,不一定采样率越高越好,帧长越长越好,相反,较低的采样率和帧长可以大大节省 Flash 和 Ram 的空间,以及减少推断时间。目前测试进行的实验次数仍然较少,可能得到的结论不一定非常准确,本文中的实验全部使用了相同的数据集和相同的网络模型,以减少评估参数。客户可以根据实际需要,使用更多的模型,更多的测试参数进行实验。

2024-04-05 09:32:08 1670 1

电机控制基于MC SDK V6.4的STM32C5马达控制程序构建:三电阻与单电阻采样模式下的嵌入式系统设计

内容概要:本文介绍了如何在STM32C5系列微控制器上基于MC SDK V6.4创建马达控制程序的完整流程。由于当前版本的MC SDK尚未原生支持STM32C5芯片,文档提供了一套半自动化的方法,指导开发者通过配置CubeMX2.0生成底层硬件代码,并结合MC SDK中的马达控制中间层与应用层代码,完成从PWM、ADC外设配置到中断管理、传感器支持(如HALL、Encoder)的系统性移植。文档还详细说明了不同电流采样方式(三电阻、单电阻)的ADC配置差异,提供了适用于多种开发环境(Keil/IAR)的示例工程,并给出了硬件更换或仅更换电机时的适配方法。; 适合人群:具备嵌入式开发基础,熟悉STM32系列MCU和马达控制应用的工程师,尤其是从事无刷直流电机或永磁同步电机控制系统开发的研发人员;有1年以上相关工作经验者更佳。; 使用场景及目标:①在STM32C5平台上快速搭建基于FOC的马达控制系统;②实现无传感器控制(STO/HSO)、HALL或编码器反馈控制;③复用现有MC SDK生态进行跨平台移植,提升开发效率;④利用Motor Pilot工具进行调试与参数整定。; 阅读建议:此资源以实际项目为导向,建议读者结合提供的示例工程和硬件平台(Nucleo-C5A3ZG + X-Nucleo-IHM16M1)动手实践,重点理解外设资源配置逻辑与SDK代码之间的接口关系,并注意HAL库版本差异带来的代码调整。

2026-09-22

LAT1695 转换STM32CubeIDE工程到STM32CubeIDE for Visual Studio Code-v1.0

内容概要:本文介绍了如何将STM32CubeIDE工程转换为STM32CubeIDE for Visual Studio Code支持的CMake格式,重点讲解了两种转换方式:一是转换现有的STM32CubeIDE项目,二是从STM32Cube固件库中选择例程进行导入与转换。文档详细说明了操作步骤,包括使用【Convert Eclipse STM32CubeIDE project】和【Import STM32Cube example(s)】菜单功能,以及转换过程中所需的网络连接和工具下载(如ide-project-converter)。同时强调了操作前提,如需安装特定版本的开发环境,并给出了提高搜索效率的技巧,例如指定本地仓库路径。; 适合人群:熟悉STM32开发流程,具备一定嵌入式开发经验的工程师或开发者,尤其是正在使用或计划迁移到Visual Studio Code开发环境的技术人员。; 使用场景及目标:①帮助用户将原有基于Eclipse架构的STM32CubeIDE工程顺利迁移至现代化的VS Code开发平台;②提升开发灵活性,利用CMake构建系统优化项目管理与跨平台协作;③快速导入并转换STM32Cube官方例程用于学习或二次开发; 阅读建议:在操作前确保已正确安装STM32CubeIDE for VS Code V3.8.0及以上版本,并保持网络畅通以完成组件下载;建议结合实际工程逐步尝试文档中的每一步骤,优先对非关键项目进行测试验证。

2026-09-22

LAT1703 stm32c5 LL cordic例程-v1.0

内容概要:本文介绍了在STM32C5系列微控制器上实现LL(Low-Layer)Cordic算法的例程移植过程,针对目前STM32CubeC5生态中缺乏Cordic例程的问题,以STM32CubeG4中的Cordic例程为基础,将其成功移植至NUCLEO-C5A3ZG硬件平台。文中详细说明了开发环境配置、工程创建、关键宏定义与变量的引入、Cordic外设的初始化与配置方法,并给出了核心代码片段,包括余弦和正弦值的计算流程以及误差校验机制。最终通过在main函数中调用计算函数并比对输出结果与参考值,验证了功能正确性。 适合人群:具备嵌入式开发基础,熟悉STM32系列MCU及LL驱动库使用的1-3年经验工程师。 使用场景及目标:①帮助开发者在STM32C5平台上快速实现三角函数等数学运算;②指导如何将G4系列的LL例程适配到新型C5系列芯片;③掌握Cordic协处理器的寄存器级配置与精度控制方法。 阅读建议:此资源侧重于底层驱动移植与硬件外设应用,建议结合IAR开发环境实践操作,重点关注Cordic模块的参数配置与Q1.31定点数格式处理,并通过调试工具监控输出结果以确保算法准确性。

2026-09-22

LAT1704-用PLAY-Programmable-logic-array-实现PWM波的三态输出-v1.0

内容概要:本文介绍了如何利用STM32G5系列微控制器中的可编程逻辑阵列(PLAY)外设实现PWM波的三态输出(正常PWM、强制高、强制低)。通过配置PLAY的软件输入寄存器(SWIN0/SWIN1)与多个查找表(LUT),结合TIM4定时器的触发信号(TRGO)实现输出状态的同步切换,确保状态变化与PWM周期对齐。系统使用三个LUT:前两个用于将SWIN位与PWM周期同步,第三个实现三选一逻辑输出,最终通过PLAY_OUT引脚输出所需波形。实验结果表明,该方法能灵活、精确地控制PWM输出状态,适用于数字电源和电机控制中的故障保护与算法控制场景。; 适合人群:具备嵌入式系统基础、熟悉STM32定时器和硬件逻辑设计的工程师,尤其适用于从事数字电源、电机控制等领域的研发人员(工作年限1-3年以上); 使用场景及目标:①在需要快速封锁PWM脉冲(如过流保护)时实现安全的强制高低电平输出;②替代外部逻辑器件,简化电路设计,提升系统集成度与响应实时性;③探索PLAY在复杂PWM生成、引脚重映射和故障联动中的扩展应用; 阅读建议:建议结合STM32CubeMX工具进行LUT配置实践,并参考RM0514参考手册深入理解PLAY外设机制,在实际项目中验证同步时序与可靠性。

2026-09-22

LAT1705 如何将全部代码放在SRAM中运行-v1.0

内容概要:本文详细介绍了如何将STM32的代码全部放在SRAM中运行,适用于需要通过STM32系统bootloader将加密的APP和IAP临时烧录到SRAM中执行的应用场景。文档以Nucleo-G431RB开发板为例,分别讲解了在Keil和IAR集成开发环境中配置工程,使代码下载至SRAM并成功运行的具体步骤,包括修改链接脚本(ICF/SCT文件)、调整中断向量表位置、添加必要宏定义、移除Flash算法、使用调试脚本加载程序等关键操作,并提供了验证方法确保代码确实在SRAM中执行。; 适合人群:具备嵌入式开发基础,熟悉STM32微控制器、Keil与IAR开发环境,从事固件开发或安全启动设计的1-3年经验工程师。; 使用场景及目标:①实现IAP安全烧录,避免敏感代码长期驻留Flash;②掌握在无Flash情况下通过SRAM运行临时代码的技术;③深入理解STM32内存布局、中断向量表重映射及调试机制; 阅读建议:建议结合STM32G4系列参考手册和实际硬件平台同步操作,重点关注ICF/SCT文件配置与调试脚本的编写,注意不同STM32系列SRAM地址和大小的差异,需根据具体型号调整配置。

2026-09-22

【电力电子控制】基于STM32G0B1的全桥移相与同步整流PWM信号生成方案设计

内容概要:本文介绍了一种基于STM32G0B1系列MCU实现全桥移相+同步整流PWM控制的解决方案,重点利用片上多个定时器(TIM1、TIM2、TIM3、TIM4、TIM15)的级联与同步功能,生成满足特定时序要求的多路PWM信号。方案通过TIM1与TIM15分别产生原边两对互补带死区的PWM(A/B、C/D),并借助TIM3实现两者之间的相位差调节;副边同步整流管E/F的驱动信号由TIM3和TIM4生成,确保与主开关管C/D导通同步、与A/B关断同步,且相位差为180°。虽然E/F关断时刻略有提前,但整体满足客户需求,且可通过参数调整优化。; 适合人群:具备嵌入式系统开发经验,熟悉STM32定时器机制,从事电源管理、数字电源或电力电子控制的工程师;; 使用场景及目标:①实现移相全桥拓扑中精确的PWM相位控制;②构建高效同步整流驱动时序;③在低成本MCU上实现复杂PWM逻辑而无需外部硬件支持;; 阅读建议:此资源侧重于定时器的高级应用与协同配置,建议结合STM32G0系列参考手册和实际硬件平台进行代码调试与波形验证,重点关注TRGO触发、OC事件同步以及时序匹配问题。

2026-09-22

LAT1697 使用Profile管理基于VSCode的两类STM32CubeMX2的开发环境-v1.0

内容概要:本文介绍了如何利用VSCode的Profile功能来管理两类基于VSCode的STM32CubeMX2开发环境——STM32CubeIDE for VSCode和Keil Studio Pack。通过创建独立的Profile(如命名为“CubeIDE”和“Keil”),用户可在同一套VSCode中隔离安装扩展、配置设置和界面布局,避免两者之间的插件与配置相互干扰。文档详细演示了新建Profile、命名、切换方式,以及在对应Profile中安装专用开发插件的过程,确保每种开发环境保持整洁独立。最终实现根据不同项目需求快速切换纯净的开发环境。; 适合人群:使用STM32CubeMX2进行嵌入式开发,熟悉VSCode操作的嵌入式软件工程师或开发者;尤其适用于同时需要CMake(STM32CubeIDE)和Open-CMSIS(CSolution)开发支持的技术人员。; 使用场景及目标:① 在同一台设备上高效管理两种不同的STM32开发环境;② 避免插件冲突和配置混乱,提升开发效率与环境稳定性;③ 快速切换适配CMake与CSolution项目的开发需求; 阅读建议:建议读者边阅读边实操,在本地VSCode环境中按照步骤创建Profile并安装对应插件,注意版本兼容性(如VSCode 1.112.0及以上),并定期参考ST官网获取最新工具更新信息。

2026-09-22

LAT1700 如何实现Pulse-Direction Encoder的信号采集-v1.0

内容概要:本文介绍了在不原生支持Pulse-Direction编码器接口的早期STM32 MCU(如F4/H7系列)上,如何利用定时器(Timer)结合DMA技术实现对脉冲-方向编码器信号的高效采集。通过将Pulse信号接入定时器通道进行脉冲计数,Direction信号通过另一通道检测边沿变化,并借助DMA自动修改定时器的计数方向(UP/DOWN),从而实现无CPU干预的自动方向识别与位置跟踪。该方案充分利用硬件资源,降低系统负载,提升实时性。; 适合人群:具备STM32嵌入式开发基础,熟悉定时器和DMA机制,有一定外设驱动开发经验的工程师(工作1-3年及以上);适用于工业控制、电机驱动等领域的研发人员。; 使用场景及目标:①在MCU无专用Pulse-Direction接口时实现编码器信号采集;②减少CPU中断负担,提高系统响应效率;③掌握Timer与DMA协同工作的高级应用技巧,用于高精度位置检测系统的设计与优化。; 阅读建议:此资源以具体实例(STM32H743的TIM1)展开,需结合参考手册(如RM0399)理解寄存器配置细节,建议在实际开发板上调试验证,重点关注DMA内存地址对齐、通道映射及时序同步问题。

2026-09-22

LAT6041 STM32MP1x USB OTG FIFO设置-v1.0

内容概要:本文详细介绍了STM32MP1x系列芯片在USB OTG外设模式下如何配置Gadget FIFO,重点阐述了RxFIFO和TxFIFO的分配机制与计算方法。文档解释了OUT端点共享接收FIFO、IN端点独占发送FIFO的架构特点,并提供了基于4KB专用RAM资源限制下的FIFO大小配置公式和约束条件。通过一个复合设备(NCM+三个ACM接口)的具体配置实例,展示了如何根据各功能端点的最大数据包大小合理分配g-rx-fifo-size、g-np-tx-fifo-size和g-tx-fifo-size参数,确保满足系统资源限制并实现最优性能。; 适合人群:嵌入式系统开发工程师、Linux驱动开发者,具备一定USB协议基础和设备树配置经验的研发人员;; 使用场景及目标:① 在STM32MP1x平台上配置USB Gadget复合设备时优化FIFO资源分配;② 解决多功能USB设备因默认FIFO设置不当导致的数据传输异常或性能瓶颈问题;③ 理解USB OTG在外设模式下的内存管理机制与端点数据流控制原理;; 阅读建议:在实际开发中应结合具体功能需求计算FIFO大小,注意总内存不超过952个32位字的限制,建议参考驱动代码验证端点分配逻辑,并以实测结果调整配置参数。

2026-09-22

LAT6048 如何扩大MP2的A35核和M33核共享内存-v1.0

内容概要:本文详细介绍了如何在STM32MP2x系列芯片上扩大Cortex-A35核与Cortex-M33核之间的共享内存。由于该系列芯片支持双核直接访问DDR内存,因此需合理配置内存映射以避免冲突并实现高效数据交互。文章围绕默认内存布局(前64MB预留用于OP-TEE和M33核)无法满足特定需求的情况,系统性地阐述了修改内存映射的方法,涵盖TF-A BL2、OP-TEE、U-boot及Linux内核各阶段的内存地址调整步骤,并提供了基于OSTL6.0的具体补丁示例,确保各组件加载地址协调一致,从而成功扩展共享内存区域。 适合人群:嵌入式系统工程师、固件开发人员,具备一定ARM架构和嵌入式Linux启动流程基础知识的研发人员。 使用场景及目标:①需要扩大M33与A35核间共享内存的应用场景;②定制化DDR内存映射以满足高性能数据交互或大容量缓冲区需求的项目开发;③深入理解STM32MP2x启动链中各组件(TF-A、OP-TEE、U-boot、Kernel)内存分配机制。 阅读建议:本文涉及底层系统配置,建议结合官方Wiki文档和实际开发环境进行验证,操作时需严格同步各阶段的内存地址修改,防止因配置不一致导致系统启动失败。

2026-09-22

LAT1653-STM32G0的GPIO能否先于VDD上电话题v1.0

内容概要:本文针对STM32G0系列微控制器在硬件设计中可能出现的GPIO引脚先于VDD上电的问题进行分析,重点依据芯片规格书(如DS13560)和应用笔记(AN4899)中的电气参数与设计规范,说明不同类型GPIO(FT耐5V和TT耐3V)在VDD未上电时的电压限制。明确指出当VDD=0V时,FT引脚输入电压不得超过3.6V,而TT引脚不得超过0.3V,否则可能引发灌电流问题,影响系统启动甚至造成损坏。同时强调设计中应尽量避免GPIO先于VDD上电,若无法避免,需采用钳位二极管和串联电阻等措施限制电压和灌入电流。; 适合人群:从事嵌入式硬件设计、具有STM32开发经验的电子工程师,特别是涉及电源时序设计的硬件研发人员。; 使用场景及目标:①指导硬件电路设计中正确处理GPIO与VDD上电时序关系;②预防因GPIO提前上电导致的MCU启动异常或潜在损伤;③优化电源管理设计,提升系统可靠性。; 阅读建议:此文档为本地技术提示类资料,建议结合ST官方发布的最新规格书与应用笔记(如AN4899)交叉参考,并在实际设计中通过仿真或测试验证保护电路的有效性。

2026-09-03

LAT1696 编译与调试STM32CubeMX2生成的Open-CMSIS工程-v1.0

内容概要:本文详细介绍了如何使用STM32CubeMX2生成基于Open-CMSIS格式的AC6工程,并通过Keil Studio(基于VSCode)进行编译与调试的完整流程。重点讲解了Open-CMSIS工程的结构特点,以.csolution.yml为顶层配置文件,支持多编译器调用,文中聚焦于AC6编译器的应用。文章逐步演示了工程生成、Keil Studio环境搭建、工具链配置、解决方案设置、自动下载所需组件、编译构建及使用pyOCD通过ST-LINK进行调试的操作步骤。同时强调了插件版本控制的重要性,建议使用指定版本避免兼容性问题。; 适合人群:具备嵌入式开发基础,熟悉STM32CubeMX和VSCode环境,正在 transitioning 到新工具链的研发工程师或技术支持人员;适合有一定经验的1-3年开发者; 使用场景及目标:①掌握STM32CubeMX2中Open-CMSIS工程的创建与管理方法;②实现在Keil Studio中对AC6工程的编译与调试,提升对CMSIS-Solution架构的理解和实际操作能力; 阅读建议:此资源侧重实践操作,建议读者按照文档步骤依次执行,确保软件版本一致,重点关注工具链配置与调试启动环节,遇到问题时可参考文档末尾列出的工具版本信息进行排查。

2026-09-03

LAT1683 遇到hardfault问题你还在死磕代码吗-v1.0

内容概要:本文通过一个实际案例讲解了在STM32F207芯片上使用CAN通信时触发hardfault的问题排查过程。起初从软件角度入手,尝试通过hardfault上下文定位问题,但栈帧信息异常无法有效追踪。随后通过构建最小化测试工程排除非必要代码干扰,发现相同代码在ST官方评估板运行正常,而在客户硬件平台仍出问题,从而判断问题根源在硬件。进一步分析发现客户板子VCAP引脚的滤波电容容值错误,导致内核电压纹波过大(266mV),远超正常范围。修正电容配置后问题解决,揭示了hardfault问题不仅可能源于代码,也可能由电源稳定性等硬件因素引起。; 适合人群:嵌入式系统开发工程师、STM32系列单片机开发者、具有1-3年工作经验的软硬件研发人员; 使用场景及目标:①学习如何系统性地排查嵌入式开发中的hardfault问题;②掌握从软件到硬件的故障诊断思路转换;③理解电源设计(如VCAP去耦电容)对MCU稳定运行的重要性; 阅读建议:本文适用于在实际项目中遇到难以复现或定位的hardfault问题时参考,建议结合自身硬件平台对照检查电源设计规范,尤其关注数据手册中对核心供电引脚的外围电路要求。

2026-09-03

LAT1689 MCU复位期间PC端仍然认为USB连接未断开-v1.0

内容概要:本文针对客户在使用非官方STM32H523开发板时遇到的USB连接异常问题进行分析,指出在MCU复位期间PC端仍认为USB连接未断开的根本原因在于开发板错误地在外围电路中额外添加了1.5K上拉电阻。由于新型STM32芯片已内置该电阻,外接电阻导致其在MCU复位时依然维持连接信号,从而干扰PC端对USB状态的正确识别。同时,文章还指出开发板VCAP滤波电容配置不当,存在电源稳定性隐患。通过移除多余上拉电阻可解决USB问题,但整体设计仍存在ESD防护缺失等风险。最后建议优先选用ST官方或知名品牌开发板以避免误判芯片性能。; 适合人群:嵌入式系统工程师、STM32初学者及硬件设计相关人员,尤其是涉及USB接口开发和MCU选型评估的技术人员。; 使用场景及目标:①帮助开发者理解USB连接检测机制及上拉电阻的作用;②指导正确设计STM32H5系列MCU的USB外围电路;③提醒规避非官方开发板可能带来的技术误导; 阅读建议:此资源结合实际案例剖析硬件设计常见误区,建议读者结合STM32官方参考手册和AN4879等文档对照学习,重视官方推荐电路设计,在项目开发中优先采用经过验证的参考设计以提高可靠性。

2026-09-03

白皮书实现MCU性能最大化-利用18nm FD-SOI和嵌入式相变存储器技术

内容概要:本文介绍了基于18 nm FD-SOI(全耗尽型绝缘体上硅)工艺与嵌入式相变存储器(ePCM)技术相结合的微控制器(MCU)解决方案,重点阐述了该技术如何在高性能、低功耗、高可靠性与成本效益之间实现最优平衡。通过采用FD-SOI技术,显著改善了晶体管的静电控制,降低了漏电流,并支持体偏置调节以优化性能;结合带有双极结型晶体管(BJT)选择器的ePCM,实现了高密度、高速度、低功耗且可靠的非易失性存储器集成。该方案特别适用于对代码存储容量、数据耐久性(高达10万次写入)和长期数据保持(10年)有严苛要求的工业与汽车应用。文章还详细分析了ePCM的工作原理、写入算法、可靠性保障机制及其在SoC架构中的集成方式,展示了其相较传统浮栅存储器和其他新兴NVM技术的竞争优势。 适合人群:半导体行业研发人员、集成电路设计工程师、微控制器架构师以及关注先进制程与嵌入式存储技术发展的技术人员。 使用场景及目标:① 开发高性能、低功耗、高可靠性的下一代MCU;② 在先进CMOS节点(如18 nm)下实现高效嵌入式非易失性存储器集成;③ 满足汽车、工业等关键领域对数据持久性、耐高温和抗辐射的严格要求。 阅读建议:此资源技术深度较高,建议结合半导体物理、CMOS工艺及存储器设计基础知识进行研读,并重点关注FD-SOI与ePCM协同优化的设计思路与实际性能数据,以便应用于高端微控制器平台的选型与开发决策。

2026-05-27

LAT1656-STM32U3-Flash擦写故障问题分析-v1.0

内容概要:本文分析了STM32U3系列MCU在进行Flash擦写操作时出现编程序列错误(error code=128,PGSERR置位)的问题。问题出现在系统时钟(SYSCLK)为12MHz、电压范围(voltage range)配置为Range 2的情况下,Flash擦除失败。通过对比正常与异常代码发现,Flash操作必须在电压Range 1下执行,而问题代码误将电压设为Range 2。解决方案是在执行Flash操作前切换至Range 1,操作完成后恢复至Range 2以降低功耗,并给出了具体的HAL库代码实现及时序流程。 适合人群:嵌入式软件工程师、STM32系列MCU开发者、从事低功耗产品开发的技术人员。 使用场景及目标:①解决STM32U3在低频低功耗配置下的Flash擦写故障;②掌握动态电压调节(DVS)与Flash操作之间的配合机制;③学习如何根据RM0487手册排查Flash错误标志并定位硬件行为问题。 阅读建议:本文结合实际案例与寄存器级分析,建议读者配合STM32CubeMX、参考技术参考手册RM0487以及HAL库API理解电压调节与Flash操作的时序要求,重点关注PWR和FLASH寄存器的状态变化及配置顺序。

2026-05-27

LAT1650STM32H7系列ADC-DMA传输异常案例分析-v1.0

内容概要:本文通过一个实际案例分析了STM32H7系列芯片在使用ADC配合DMA传输数据时可能出现的异常问题。详细探讨了配置错误(如误选BDMA而非DMA1/2)、内存区域访问限制(如TCM不可被DMA访问)、以及DCache导致的数据不一致等问题,并给出了相应的解决方案,包括正确选择DMA控制器、合理分配缓冲区内存位置及进行Cache一致性维护操作。最终通过禁用Cache或在DMA中断中执行Cache维护操作解决了数据显示异常问题。; 适合人群:嵌入式系统开发工程师,尤其是熟悉STM32系列微控制器并有一定硬件调试经验的中高级研发人员。; 使用场景及目标:①解决STM32H7系列MCU中ADC与DMA协同工作时的数据传输故障;②理解Cache机制对实时数据采集的影响并掌握MPU配置与Cache管理方法;③提升对STM32系统架构、总线互联和内存映射的深入认识; 阅读建议:此文档侧重于实战问题排查,建议结合STM32CubeMX工具、KEIL调试环境和参考手册同步实践,重点关注DMA配置、内存布局与Cache管理之间的关联性,在真实项目中注意规避类似陷阱。

2026-05-27

LAT1647使用STM32CubeMonitor监控TSC参数-v1.0

内容概要:本文介绍了如何使用STM32CubeMonitor工具监控STM32微控制器中TSC(Touch Sensing Controller)模块的关键参数,如Ref、Meas、Delta和StateID,以优化触摸感应性能。文章首先讲解了TSC的工作原理,基于电荷转移技术检测传感器电容变化,并详细说明影响TSC性能的主要因素,包括主动屏蔽、扩频、检测阈值、软件滤波、跳频、通道阻断、接地阻抗、肖特基二极管应用、VDD纹波控制等。随后,文档提供了使用STM32CubeMonitor进行实时参数监控的完整操作流程,涵盖环境搭建、工程编译、变量导入、数据采集及可视化分析。此外,还深入解析了关键调试参数的调整方法及其在代码中的配置位置,如CTP参数、Active Shield设置、Debounce、DTO、DxS和ECS机制等,帮助开发者量化调试效果。; 适合人群:嵌入式系统工程师、STM32开发人员、触摸传感应用开发者,具备一定MCU开发经验的技术人员; 使用场景及目标:①在开发带有触摸按键的产品时,定位触摸不灵敏或误触发问题;②通过实时监控TSC参数优化检测阈值、提升抗噪能力和系统稳定性;③理解TSC底层工作机制并实现精准调试; 阅读建议:配合32L0538DISCOVERY开发板和STM32Cube工具链实践操作,结合文中的代码配置说明与图形化监控结果进行联动分析,建议参考文末列出的AN和UM系列应用笔记以获得更全面的技术支持。

2026-05-27

LAT1649利用TIMER的组合信号实现单个周期的两次触发-v1.0

内容概要:本文介绍了如何利用STM32系列微控制器中TIMER的组合PWM模式,在一个计数周期内实现对ADC的两次触发,并支持触发时间点的灵活调节。通过配置TIMER的通道比较寄存器(CCR)生成逻辑组合(如OR或AND)的PWM信号(OCxREFC),并将该信号作为ADC的触发源TRGO,结合ADC的边沿触发机制,实现单周期内的双触发功能。文中以STM32G474为例,详细说明了TIMER和ADC的配置方法,并通过实验验证了方案的有效性。; 适合人群:具备嵌入式系统开发基础,熟悉STM32定时器与ADC模块的工程师,尤其是从事电机控制、电源管理或高精度采样相关工作的1-3年经验研发人员。; 使用场景及目标:①在需要高密度采样时,利用单个TIMER周期内精准触发ADC两次,提升采样效率;②通过调整CCR寄存器动态控制两次触发时机,满足复杂控制算法的时间同步需求;③学习并掌握TIMER组合PWM模式在实际项目中的应用技巧。; 阅读建议:建议结合STM32G4系列参考手册和STM32CubeMX工具进行实践,重点关注TIMER的Output Selector配置与TRGO信号路径设置,并通过调试观察OCxREFC波形与ADC转换结果,确保逻辑正确性。

2026-05-27

LAT1654-STM32H7双核芯片通过STlink连接失败问题分析-v1.0

内容概要:本文分析了STM32H7双核芯片在首次烧录成功后,再次通过STlink连接STM32CubeProgrammer失败的问题。主要探讨了两类原因:一是电源模式的软硬件配置不匹配,导致MCU锁死;二是选项字节配置错误,使芯片仅允许Cortex-M4内核启动,从而无法通过默认的Cortex-M7访问端口连接。针对这两类问题,文章提供了具体的解决方案,如通过拉高boot0引脚进入系统内存启动并擦除程序,或在复位状态下连接STlink进行全片擦除,以及正确选择Access Port 3(M4核)进行连接操作。同时强调开发过程中应确保BOOT_CM7和BOOT_CM4均启用,避免连接失败。; 适合人群:嵌入式系统开发工程师、STM32系列芯片使用者、具有单片机开发经验的硬件或软件工程师; 使用场景及目标:①解决STM32H7双核芯片烧录后无法再次连接STlink的问题;②正确配置电源模式与选项字节以保障开发顺利进行;③掌握STlink连接失败时的应急恢复方法; 阅读建议:此资源聚焦实际开发中的典型连接故障,建议结合硬件原理图、STM32CubeMX配置工具与STM32CubeProgrammer最新版本(v2.2.0以上)进行实践操作,注意电源模式匹配与选项字节设置,避免因配置不当造成MCU锁定。

2026-05-27

【嵌入式系统】基于VSCode的STM32C5功能安全库移植:X-CUBE-CLASSB自检模块集成与配置方法

内容概要:本文详细介绍了如何基于VSCode从零开始移植ST意法半导体的X-CUBE-CLASSB-C5功能安全扩展包到STM32C5系列微控制器。文档涵盖了工程创建、自检库集成、CMakeLists文件修改、链接脚本调整以及Flash CRC注入等关键步骤,并提供了完整的配置示例和仿真测试结果,确保CPU、FLASH、RAM等模块的自检功能正常运行。整个过程依托STM32CubeMX生成基础工程,并结合CMake构建系统完成对安全库的整合,最终实现符合Class B功能安全标准的嵌入式应用。 适合人群:具备嵌入式开发基础,熟悉STM32系列微控制器和C语言编程,有一定项目经验(1-3年)的工程师或技术开发者。 使用场景及目标:①在VSCode环境中实现X-CUBE-CLASSB-C5库的快速集成与移植;②掌握功能安全自检机制在实际项目中的应用方法,如CRC校验、内存布局调整、启动流程控制等;③为通过IEC 60730-1/60335-1等功能安全认证提供技术支持。 阅读建议:此资源以实战为导向,建议读者结合STM32CubeIDE for VSCode和STM32CubeProgrammer工具链同步操作,重点关注CMake配置、链接脚本修改及安全库的调用方式,并通过仿真验证各模块自检是否通过。

2026-09-22

【嵌入式开发】基于STM32CubeIDE的XIP调试技术:STM32N6系列外部Flash应用程序加载与硬件断点调试方案设计

内容概要:本文介绍了一种使用STM32CubeIDE在DEV模式下直接调试STM32N6 XIP应用的方法,解决了因缺少FSBL执行导致XSPI未配置而无法读取外部Flash的问题。通过在Debug启动阶段加载FSBL的ELF文件、设置向量表地址和关键断点,使系统能够在不切换Boot模式的情况下完成调试环境搭建,并最终在main函数处暂停以便调试。该方法简化了传统需反复切换启动模式的复杂流程,提升了开发效率。; 适合人群:使用STM32N6系列芯片进行嵌入式开发,熟悉STM32CubeIDE工具链,具备一定调试经验的1-3年资历工程师;尤其适用于开发XIP架构应用的研发人员。; 使用场景及目标:①在不更改硬件Boot模式的前提下实现XIP应用的快速调试;②掌握GDB脚本在STM32CubeIDE中的高级应用,如符号加载、向量表重定向和断点控制;③理解FSBL与Application之间的跳转机制及调试衔接方式。; 阅读建议:此资源基于具体工程Template_FSBL_XIP进行说明,建议读者结合STM32Cube_FW_N6_V1.3.0固件包实践操作,注意确保STM32CubeIDE版本不低于V1.18.1,并参照map文件核对函数地址以保证脚本准确性。

2026-09-22

【嵌入式系统】基于STM32C5系列MCU的USB虚拟串口移植:NUCLEO-C562RE至NUCLEO-C5A3ZG硬件适配与时钟配置方法

内容概要:本文详细介绍了如何将基于NUCLEO-C562RE的USB虚拟串口示例工程移植到NUCLEO-C5A3ZG开发板的过程。虽然两者同属STM32C5系列且USB电路设计相同,但由于外部晶振(HSE)频率不同(前者为24MHz,后者为48MHz),直接烧录会导致PC端识别失败。解决问题的关键在于修改RCC初始化代码中的PSI参考时钟设置以及头文件stm32_external_env.h中定义的HSE_Value值,确保时钟配置与硬件匹配,最终实现USB虚拟串口功能正常运行。; 适合人群:从事嵌入式开发、熟悉STM32平台及USB应用开发的工程师,尤其是有硬件移植需求的研发人员;; 使用场景及目标:①解决同系列不同型号NUCLEO板间示例代码移植问题;②掌握因外部晶振差异导致的USB通信异常排查与修复方法;③深入理解STM32HSE时钟配置对USB模块的影响; 阅读建议:在实践前应仔细对比目标板硬件规格,重点关注时钟系统设计,并结合Cube HAL库文档进行配置调整,建议配合调试工具验证时钟树设置是否正确。

2026-09-22

【嵌入式系统】基于XSPI的HyperRAM双片扩展技术:STM32N6外部存储器并行驱动方案设计

内容概要:本文介绍了STM32N6微控制器如何通过单个XSPI接口驱动两片相同的HyperRAM,以扩展外部内存容量。重点阐述了硬件连接方式、XSPIM与XSPI1的配置方法,以及软件初始化流程。通过启用XSPI_DCR1寄存器中的EXTENDMEM位,实现XSPI根据访问地址自动切换片选信号(NCS1/NCS2),从而在内存映射模式下将两片HyperRAM视为连续地址空间使用,简化了多存储器管理的复杂性。; 适合人群:嵌入式系统工程师、MCU应用开发人员,特别是熟悉STM32系列并有外部存储器扩展需求的1-3年经验开发者;; 使用场景及目标:①在机器学习推理、图像/音频处理等大内存需求场景下扩展外部RAM;②优化引脚资源利用,避免使用多个XSPI接口;③掌握STM32N6的XSPI高级配置与内存映射机制; 阅读建议:建议结合STM32CubeMX工具进行配置,并参考ST官方示例工程(如STM32N6-GettingStarted-ImageClassification)进行实践验证,重点关注EXTENDMEM位的使能逻辑与地址空间规划。

2026-09-22

【后量子密码学】PQC ML-DSA算法中Context参数的作用与标准化验签实现:基于STM32的跨库签名验证一致性设计

内容概要:本文详细解析了在使用ST的X-CUBE-PQC库进行PQC ML-DSA验签时,为何会出现与开源库验签结果不一致的问题,核心原因在于对ML-DSA算法中Context参数的理解与处理差异。根据NIST FIPS 204标准,Context参数用于域分离,是签名和验签输入的一部分,必须在双方保持一致。ST的API通过cmox_pqc_dsa_prepareHeader()显式生成包含Context的Header,而许多开源库则隐式处理或提供默认空Context的接口,导致用户易忽略该参数。文章强调,无论Context是否为空,都必须正确调用prepareHeader生成Header,才能确保验签成功。; 适合人群:从事嵌入式安全开发、使用后量子密码算法的研发人员,特别是基于STM32平台进行PQC算法集成的工程师;具备密码学基础知识及C语言开发经验者更佳。; 使用场景及目标:①解决在ST平台上验证外部ML-DSA签名失败的问题;②理解Context参数在标准算法中的作用及ST库的实现机制;③实现与开源库兼容的验签流程,确保跨平台签名验证一致性; 阅读建议:此资源聚焦于算法参数的实际应用与调试技巧,建议读者结合NIST FIPS 204标准文档,对照代码示例理解Header生成逻辑,并在实际项目中验证不同Context配置下的验签行为,避免因参数遗漏导致的安全验证失效。

2026-09-22

【微控制器领域】基于Cortex-M33内核的STM32C5系列:入门级工业应用高性能MCU设计

内容概要:本文介绍了意法半导体(ST)推出的全新STM32C5系列MCU,基于Arm Cortex-M33内核,采用40nm制造工艺,主频达144MHz,CoreMark跑分593,性能较传统Cortex-M0+产品提升显著。该系列产品具备大容量存储(最高1MB Flash、256KB SRAM)、内置ECC纠错、丰富工业接口(如FDCAN、Ethernet、OctoSPI)、硬件安全加密(支持AES、HASH、HUK等)以及功能安全设计包,满足IEC 61508 SIL3和IEC 60335 Class B标准。同时,STM32C5依托ST的双供应链体系,实现国内外本地化生产,保障长期稳定供应。; 适合人群:从事嵌入式系统开发的工程师、工业控制与智能家居领域技术研发人员,以及关注供应链安全与高性能低成本MCU解决方案的企业决策者。; 使用场景及目标:①用于智能家居、工业自动化、消费电子等对成本敏感但需高性能与高可靠性的应用场景;②助力企业实现从M0+平台向高性能M33平台的设计跃迁,提升产品竞争力;③支持国产化替代与全球化布局双重战略下的芯片选型需求。; 阅读建议:此资料适用于产品选型参考和技术预研,建议结合具体应用需求对比不同型号资源配置(如Flash/RAM大小、外设接口、安全特性),并访问官网获取更多技术文档与认证材料以完善设计评估。

2026-09-22

【嵌入式系统】ST产品更新提醒订阅指南:实现MCU与开发工具资讯实时同步的技术方案设计

内容概要:本文介绍了如何通过注册和登录ST官网的myST账户,订阅并管理ST产品更新提醒,以便及时获取STM32微控制器、传感器、电源管理器件、开发工具及相关技术资料的最新资讯。详细步骤包括:在ST官网搜索目标产品型号(如STM32H563),将其保存至myST账户以完成订阅;进入账户中心的“My Subscriptions”页面查看和管理已订阅内容;并通过“Communication Preferences”设置接收通知的语言和类型,如产品新闻、技术文档、软件更新和行业活动等。文章强调主动获取产品动态有助于提升项目开发效率,支持研发选型、调试优化及量产维护等关键阶段。; 适合人群:使用ST产品(尤其是STM32系列)的电子工程师、嵌入式系统开发者、硬件设计师及从事相关产品研发的技术人员;适用于处于产品选型、开发或量产阶段的研发团队成员。; 使用场景及目标:① 在项目初期快速掌握新型号发布和技术资料更新,辅助芯片选型;② 在开发过程中及时获取Datasheet、参考手册、应用笔记和Errata等关键文档变动;③ 量产阶段监控产品生命周期、供货状态与替代料信息,保障供应链稳定;④ 获取STM32Cube工具链、TouchGFX、STM32Cube.AI等软件资源的最新版本通知。; 阅读建议:建议读者结合自身项目实际使用的ST产品,立即登录myST账户完成关键型号和工具的订阅,并定期检查通知偏好设置,确保信息推送的时效性与相关性。同时注意以ST官网最新发布信息为准,本文档内容仅供参考和操作引导。

2026-09-22

【嵌入式系统】基于STM32H5 Bootloader的I2C固件升级与Product State切换:适用于无BOOT0控制的远程编程场景

内容概要:本文介绍了在硬件限制条件下,如何通过STM32H563的I2C Bootloader实现固件升级与运行用户程序。由于无法切换BOOT0引脚或使用调试接口,解决方案依赖于通过I2C协议与系统Bootloader通信,完成Flash擦除与写入、Product State状态切换(从System Boot到Closed状态)、OBKEY Provisioning及MCU复位等操作,最终实现从用户Flash启动应用程序。文中提供了基于NUCLEO-H563开发板的参考工程,涵盖关键命令实现,如Special Command(0x50)用于状态切换和Provisioning,并强调了通信配置、OBKEY头部格式转换及RAM存储区域(SRAM3)等注意事项。; 适合人群:具备嵌入式开发基础、熟悉STM32系列MCU的应用工程师或技术支持人员,尤其适用于从事固件升级方案设计、量产 provisioning 流程开发的技术人员。; 使用场景及目标:① 在无调试接口和BOOT引脚控制权限的场景下实现远程固件更新;② 掌握通过I2C Bootloader完成Product State管理与安全密钥(OBKEY)注入的方法;③ 学习并调试基于AN4221和AN2606规范的Bootloader通信流程。; 阅读建议:配合参考工程代码(H563-bootloader)与官方文档(如RM0481、AN4221)一起实践,重点关注I2C通信参数设置、OBKEY文件格式处理及状态切换时序,建议使用两块NUCLEO-H563板进行验证测试。

2026-09-22

【嵌入式开发】基于STM32CubeIDE for VSCode的GCC链接脚本依赖配置:解决Flash起始地址修改无效问题

内容概要:本文针对在使用STM32CubeIDE for VSCode开发过程中,修改链接文件(ld文件)中的Flash起始地址无效的问题进行了分析与解决。问题根源在于CMake工程未将链接脚本文件作为链接阶段的依赖项,导致即使修改了Flash地址,编译系统也无法触发重新链接。文章提供了两种解决方案:一是每次构建前手动清除编译结果再重新编译;二是通过在CMakelist.txt中添加依赖配置,使链接脚本的变化能被自动检测并触发重链接,推荐采用第二种方法以提升开发效率。; 适合人群:使用STM32CubeIDE for VSCode进行嵌入式开发的工程师,尤其是涉及Bootloader与应用程序分区开发的技术人员;具备CMake构建系统基础知识的1-3年经验开发者。; 使用场景及目标:①在开发STM32的Boot-App双区启动项目时,需要调整程序在Flash中的起始地址;②希望构建系统能正确响应链接脚本的更改,避免因缓存导致的编译错误;③优化CMake配置以增强工程自动化程度。; 阅读建议:此资源聚焦于构建系统的细节处理,建议读者结合实际工程操作,理解CMake中LINK_DEPENDS属性的作用,并在项目中实践相关配置,确保链接脚本的变更能被正确识别和应用。

2026-09-22

【嵌入式安全】基于Armv8-M TrustZone与FreeRTOS的中断抢占异常分析:STM32H563平台优先级映射机制研究

内容概要:本文详细分析了STM32H563在启用TrustZone和FreeRTOS后,优先级为0的中断无法抢占优先级为1的中断的问题。根本原因在于FreeRTOS启动调度器时调用SecureInit_DePrioritizeNSExceptions()函数,将AIRCR.PRIS置为1,导致非安全异常优先级被重新映射,原本不同的优先级被压缩到相同的组优先级,从而丧失抢占能力。文章通过理论分析和实验验证相结合的方式,展示了开启TrustZone前后中断抢占行为的变化,并利用NUCLEO-H563ZI开发板进行实测,波形结果证实了分析结论。; 适合人群:嵌入式系统工程师、STM32开发者、熟悉TrustZone和FreeRTOS的中高级研发人员,尤其是从事安全相关应用开发的技术人员; 使用场景及目标:①帮助开发者理解在Cortex-M33架构下TrustZone与FreeRTOS协同工作时对中断优先级的影响机制;②指导在启用TrustZone的应用中正确配置中断优先级,避免因AIRCR.PRIS设置导致的抢占异常;③提供问题排查思路与验证方法,提升系统实时性可靠性设计能力; 阅读建议:建议结合STM32CubeMX工程配置和实际波形观测来深入理解AIRCR.PRIS的作用效果,重点关注非安全中断优先级映射规则及其对实时行为的影响,在实际项目中谨慎评估优先级分配策略。

2026-09-22

【嵌入式系统】基于LSE校准的STM32U3 MSI时钟精度优化:常温下频率稳定性提升方法研究

内容概要:本文通过对STM32U3系列微控制器在常温(25℃)环境下,MSI(多速内部振荡器)在校准前后的频率稳定性进行对比分析,验证了LSE(低速外部晶振)校准MSI的有效性。测试采用NUCLEO-U385RG-Q开发板和KEYSIGHT 53230A频率计,在PLL模式下利用LSE作为参考源对MSI进行校准,采集并计算校准前后的频率偏差(PPM)。结果显示,未校准时MSI频偏高达约5050 ppm,而校准后显著改善至-2.425 ppm和-3.200 ppm,接近LSE自身精度(约6 ppm),证明校准机制能大幅提升MSI频率稳定性,且符合数据手册中“PLL模式下MSI精度等于LSE精度”的设计规范。; 适合人群:嵌入式系统工程师、STM32开发者、硬件设计

2026-09-22

【嵌入式安全启动】STM32N6固件签名兼容性:基于STM32CubeProgrammer新旧版本对齐参数变更解析

内容概要:本文介绍了在使用STM32N6系列芯片时,通过STM32CubeProgrammer不同版本对BIN文件进行签名时出现的兼容性问题及解决方案。重点指出从STM32CubeProgrammer v2.21版本开始,签名工具STM32_SigningTool_CLI.exe要求在原有命令基础上新增“-align”参数,否则可能导致签名后的程序无法正常运行。文章通过对比v2.19与v2.22版本的实际测试,验证了该问题的存在,并结合STM32Cube_FW_N6_V1.3.0版本的更新说明明确了修改方法。最终结论强

2026-09-22

【嵌入式系统】STM32C5硬件CRC计算差异分析:跨系列CRC结果一致性配置方法研究

内容概要:本文分析了STM32C5系列MCU在使用硬件CRC计算时,与STM32H5系列在相同配置下计算结果不一致的问题。经排查发现,C5系列HAL2驱动在写入数据前执行了__REV字节反转操作,而H5系列未进行此操作,导致结果差异。解决方案是利用STM32C5新增的CRC_CR寄存器中的RTYPE_IN位,通过硬件配置实现输入数据的字节翻转(如设

2026-09-22

人工智能基于STM32N6双模型手势识别系统设计:手掌检测与关键点定位在嵌入式AI的应用实现

内容概要:本文详细介绍了ST官方发布的AI软件包x-cube-n6-ai-hand-landmarks,该软件包基于STM32N6微控制器实现手掌检测与手部关键点定位的双模型AI应用。系统通过摄像头采集图像,利用DCMIPP的双Pipeline分别处理显示和神经网络输入数据,采用FreeRTOS操作系统调度任务。核心流程包括:使用Palm Detector模型在整帧图像中检测手掌并生成ROI区域,再通过Hand Landmark模型对裁剪旋转后的手部区域进行21个关键点的精确识别,并支持跟踪模式以降低计算开销。文档还详述了模型部署流程,包括使用stedgeai工具进行模型转换、内存配置、权重烧录等环节,并提供了摄像头配置、纵横比处理模式及多款传感器支持信息。; 适合人群:嵌入式AI开发者、STM32系列芯片使用者、计算机视觉应用工程师,特别是具备一定嵌入式开发经验、熟悉C语言和神经网

2026-09-22

【嵌入式系统】基于STM32N6的EMMC启动Load&Run实现:通过SDMMC外设驱动在SRAM中加载应用程序的设计方案

内容概要:本文介绍了在STM32N6微控制器上实现从EMMC存储器启动并运行应用程序(Load&Run)的技术方案。由于STM32CubeMX生成的工程中缺少EMMC驱动支持,导致仅外接EMMC时无法正常编译和加载应用代码。文章提出通过复用现有的SD卡驱动框架,扩展实现EMMC驱动的方法,具体包括添加stm32_sal_mmc驱动代码,并在stm32_sdcard_driver中补充对应宏定义和初始化流程。此外,还需在初始化阶段对SDMMC1外设执行复位操作,以确保EMMC正确启动。最终通过STM32N6 Nucleo开发板验证,实现了FSBL将APPLI代码从EMMC加载至内部SRAM运行的目标。文中还提供了测试工程附件供参考。 适合人群:具备嵌入式开发基础,熟悉STM32系列MCU及外设驱动开发,从事底层启动、Bootloader或存储系统设计的1-3年经验工程师。 使用场景及目标:①解决STM32N6仅外接EMMC时无法实现Load&Run的问题;②学习如何基于现有SD驱动框架扩展支持EMMC设备;③掌握EMMC初始化过程中硬件复位的关键步骤。 阅读建议:此资源侧重于实际工程问题的解决,建议结合提供的测试代码(test_stm32n6_emmc_lrun.7z)进行实践,重点关注驱动适配与初始化顺序,并注意与官方最新文档对比验证内容一致性。

2026-09-22

【嵌入式系统】基于STM32H533的UCPD Dead Battery功能实现:Type-C供电稳定性问题分析与解决方案

内容概要:本文详细分析了在使用STM32H533系列单片机实现UCPD(USB Type-C Power Delivery)Dead Battery功能时,VBUS无法稳定供电的问题及其解决方案。重点阐述了通过外部和内部下拉电阻实现Dead Battery功能的硬件与软件配置方法,指出在HAL初始化过程中调用HAL_PWREx_DisableUCPDDeadBattery()会导致下拉电阻被禁用,从而中断供电;同时强调在系统时钟初始化前必须及时关闭Dead Battery模式,避免因切换时间超限导致协议识别失败。最终通过正确的配置顺序实现了稳定的VBUS供电和正常的PD通信。; 适合人群:从事嵌入式开发、熟悉STM32平台并正在开发USB PD功能的硬件/软件工程师,尤其是需要实现低功耗启动或Dead Battery功能的研发人员。; 使用场景及目标:①解决使用STM32 UCPD外设实现Dead Battery功能后VBUS供电不稳定的问题;②掌握内部下拉电阻的正确启用与切换时机,确保PD协商正常进行;③优化系统初始化流程以符合PD协议时序要求; 阅读建议:在实际调试中应结合NUCLEO开发板和示波器观测CC线波形,严格按照AN5225应用笔记的步骤操作,并注意HAL库函数对底层配置的影响,避免在关键阶段误关闭必要的硬件功能。

2026-09-22

【嵌入式系统】基于STM32的ClassB 4.0功能安全自检方案:堆栈溢出与ADC/IO/PC指针检测方法实现

内容概要:本文介绍了在STM32系列微控制器上实现ClassB 4.0功能安全要求的扩展自检方法,涵盖堆栈溢出、PC指针、IO端口和ADC模块的自检技术。文档详细说明了各模块的自检原理与实现步骤,并提供经过NUCLEO-G031K8开发板验证的参考代码。堆栈自检通过在栈底写入“魔术字”并周期性检测是否被覆盖来判断溢出;PC指针自检采用函数指针跳转方式验证程序计数器的正确性;IO自检通过GPIO回读机制确保引脚功能正常;ADC自检则利用内部参考电压通道Vrefint的稳定特性,检测转换结果是否处于预期范围。所有代码均基于Keil MDK编译器开发,可供用户集成到实际项目中。; 适合人群:从事嵌入式系统开发、具备一定MCU应用经验的功能安全相关工程师,尤其是参与工业控制、家电或消费类电子产品研发的技术人员。; 使用场景及目标:①为满足IEC 60730等ClassB功能安全标准,补充ST官方库未涵盖的自检功能;②在产品启动或运行期间执行关键硬件模块的健康状态检测,提升系统可靠性与安全性;③作为功能安全认证前的技术预研和原型验证参考。; 阅读建议:此资源以实用为导向,建议结合提供的参考工程stm32g031-classb-extension.zip进行代码调试与实验,注意根据具体硬件平台调整配置,并在正式应用前与认证机构沟通确认方案合规性。

2026-09-22

【嵌入式通信】基于STM32H5 Classic USBH的4G Dongle枚举与AT指令通信实现

内容概要:本文介绍了基于STM32H5系列MCU的Classic USBH中间件实现对4G Dongle设备的枚举及AT指令通信的技术方案。通过NUCLEO-H563开发板和开源中间件搭建测试环境,成功完成USB设备枚举,并针对“No registered class for this device”问题,通过分析设备描述符,定位到需使用bInterfaceNumber=4的接口进行AT指令通信。随后修改USBH代码,手动指定激活类并配置相关端点管道,最终实现通过Bulk端点发送AT指令并与4G Dongle正常通信。文章强调该方法适用于标准、复合或自定义USB设备,为嵌入式开发者提供了灵活扩展多Class支持的思路。; 适合人群:具备嵌入式开发基础,熟悉STM32平台和USB协议,从事物联网、通信模块集成等相关工作的1-3年经验研发人员; 使用场景及目标:①在STM32H5平台上快速实现USB Host对非标准4G Dongle的枚举与通信;②掌握如何通过修改USBH中间件支持特定接口类,实现AT命令传输;③为工业控制、远程通信等场景下的嵌入式系统集成4G模块提供技术参考; 阅读建议:本文以实际案例为导向,建议读者结合GitHub源码与硬件平台动手实践,重点关注设备描述符解析、pActiveClass赋值逻辑及端点Pipe配置过程,调试时注意USB管道资源限制,确保满足多接口应用需求。

2026-09-22

【嵌入式安全调试】STM32H5芯片DA回退失败问题分析:基于硬件NRST连接异常的故障诊断与解决方法研究

内容概要:本文分析了一起STM32H5系列MCU在执行Debug Authentication(DA)回退测试时失败的案例。问题出现在客户自研硬件平台上,尽管使用与NUCLEO开发板相同的固件和配置,DA回退仍失败。经过排查,发现根本原因在于客户硬件设计中在MCU的NRST引脚串联了一个1kΩ电阻,而根据ST官方硬件设计指南AN5711,NRST引脚不应额外串联电阻。移除该电阻后问题解决。文章进一步强调,在进行DA回退时必须正确连接NRST引脚,以便调试器通过拉低复位信号触发MCU进入认证流程,并建议在SWD接口设计中预留NRST连接(可使用0欧电阻便于调试与EMC测试间的切换)。; 适合人群:嵌入式系统工程师、STM32硬件设计人员、固件开发人员,特别是涉及安全调试认证功能的产品开发者;具备一定硬件电路基础和STM32开发经验的技术人员。; 使用场景及目标:①指导硬件设计中正确实现SWD调试接口,尤其是NRST引脚的连接方式;②解决DA回退失败类问题,深入理解Debug Authentication机制中复位信号的作用;③提升产品在安全调试认证阶段的兼容性与可靠性; 阅读建议:此资源结合实际故障案例进行分析,具有较强的工程实践指导意义,建议硬件和固件工程师共同阅读,在项目设计初期参照ST官方文档规范布局布线,避免因细微设计差异导致认证失败。

2026-09-22

【嵌入式安全】基于STM32H573的STiROT与看门狗冲突分析:写保护机制导致的复位问题及解决方案

内容概要:本文分析了在STM32H573微控制器上启用STiROT安全功能后,独立看门狗(IWDG)出现意外复位的问题。通过实验验证,问题并非发生在STiROT执行阶段,而是在用户代码运行期间,尽管已调用喂狗函数,但看门狗仍持续复位。根本原因在于STiROT对看门狗模块启用了写保护机制,导致标准喂狗操作失效。解决方案是在初始化看门狗前显式调用IWDG_ENABLE_WRITE_ACCESS()函数解除写保护,并加入适当延时,即可恢复正常。文章指出,虽然HAL库的MX_IWDG_Init()函数内部包含写使能操作,但在当前版本中仍需手动提前解除保护才能生效,未来HAL库更新可能修复此问题。; 适合人群:使用STM32系列芯片特别是H5系列、涉及STiROT安全启动配置及看门狗应用的嵌入式软件工程师或系统开发者;具备一定底层驱动调试经验的技术人员。; 使用场景及目标:①解决启用STiROT后看门狗异常复位问题;②理解安全启动机制对外设写保护的影响;③掌握在安全环境中正确配置IWDG的方法;④为类似安全功能下的外设兼容性问题提供排查思路。; 阅读建议:本文适用于实际项目中遇到同类问题的开发者,建议结合代码实例在开发板上复现并验证解决方案,注意添加必要的延时以确保写访问权限生效,同时关注后续HAL库版本更新是否优化相关流程。

2026-09-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除