laocuo1142 发表于 2025-2-24 15:10

STM32H750在只能调试时运行,重新上电和reset都不行

最近在调试 STM32H750VBT6 时遇到程序只有在调试时可以运行,虽然勾选了 rest and run ,但下载完任然不运行。检查了 boot 和 reset 电压均正常。最后,是用了 AC5 编译一遍后下载,就解决了问题。再用 AC6 也行。不晓得怎么回事啊

yangjiaxu 发表于 2025-3-6 15:16

这个AC5和AC6来说,确实不一样,有些时候尽量用低版本的比较好

公羊子丹 发表于 2025-3-7 07:47

你是在使用 ST-LINK 进行调试吗?有时调试器的配置或者固件版本可能会影响程序的下载和启动。

周半梅 发表于 2025-3-7 07:49

你检查过编译选项和链接脚本吗?可能是某些优化设置或者启动地址有问题,导致程序无法正常启动。

帛灿灿 发表于 2025-3-7 07:50

使用 AC5 和 AC6 可能是因为它们生成的固件映像格式不完全相同,AC5 可能默认启用了某些启动选项。

童雨竹 发表于 2025-3-7 07:51

你试过清除芯片的 Flash 内容再下载程序吗?有时候残留的数据可能会导致程序无法正常启动。

万图 发表于 2025-3-7 07:53

你在检查 boot 和 reset 电压时,有没有关注到复位电路上的微小波动?它可能影响 MCU 的启动行为。

Wordsworth 发表于 2025-3-7 07:55

STM32H7 系列的启动模式比较复杂,确保 BOOT0 和 BOOT1 引脚的配置是正确的,避免进入系统引导模式。

Bblythe 发表于 2025-3-7 07:56

你用的是什么调试接口?SWD 还是 JTAG?不同接口的配置和行为可能会有所不同。

Pulitzer 发表于 2025-3-7 07:58

是否有看到调试日志中的错误信息?它可能提供了为什么下载后程序没有执行的线索。

Uriah 发表于 2025-3-7 07:59

如果程序只有在调试模式下运行,可能是没有正确设置程序的启动点或复位矢量。可以试着在 AC6 中重新配置启动文件。

Clyde011 发表于 2025-3-7 08:01

你确认过下载后的程序是否会执行 SystemInit() 和 main() 启动函数吗?有时启动文件可能没有正确配置。

将爱藏于深海 发表于 2025-4-19 01:23

链接脚本或内存映射问题:调试时,调试器可能自动调整了程序的加载地址或堆栈指针。独立运行时,程序可能因初始化错误(如堆栈溢出、向量表未正确映射)而崩溃

失物招領 发表于 2025-4-19 02:34

有可能是你的启动文件(如 startup_stm32h750xx.s)未正确初始化关键寄存器(如 VTOR 向量表基址寄存器)。调试器可能隐式修复了某些初始化问题

她已醉 发表于 2025-4-19 03:34

AC6 默认的优化级别可能生成了与 AC5 不兼容的代码,导致运行时错误。例如,AC6 的某些优化可能改变了全局变量的初始化顺序

捧一束彼岸花 发表于 2025-4-19 04:45

下载工具可能未正确擦除目标 Flash 区域,导致旧代码残留。AC5 和 AC6 生成的二进制文件格式或对齐方式不同,可能影响写入结果

故意相遇 发表于 2025-4-19 05:55

虽然您已检查 BOOT 和 RESET 电压,但仍需确认:是否启用了外部晶振(HSE)或内部时钟(HSI)是否正确配置了时钟树

春日负喧 发表于 2025-4-19 06:34

在 system_stm32h7xx.c 或启动文件中,确保 SCB->VTOR 指向正确的向量表地址。确保链接脚本(如 .ld 文件)中,FLASH 和 RAM 的地址与芯片手册一致

温室雏菊 发表于 2025-4-19 07:45

在编译器设置中,将优化级别设置为 -O0(无优化)。逐步启用优化(如 -O1、-O2),观察问题是否复现

白马过平川 发表于 2025-4-19 08:34

建议检查全局变量和静态变量的初始化顺序是否正确
页: [1]
查看完整版本: STM32H750在只能调试时运行,重新上电和reset都不行