STM32CubeIDE 在地址“xxx”处中断,没有可用的调试信息,或在程序代码之外

Posted

技术标签:

【中文标题】STM32CubeIDE 在地址“xxx”处中断,没有可用的调试信息,或在程序代码之外【英文标题】:STM32CubeIDE Break at address "xxx" with no debug information available, or outside of program code 【发布时间】:2020-06-14 23:47:23 【问题描述】:

我正忙着用 STM32F030C8 单片机开发一些新硬件。我正在使用带有 gcc 的 STM32CubeIDE。我对微控制器开发非常陌生,这是我使用 ST 及其工具的第一个项目。

这是一个非常基本的程序,只触发一个 GPIO。其余的都是生成的代码。由于我在这方面的经验很少,我希望有人可以指出我可以查看的位置。我怀疑这可能是配置问题。

这是代码(我删除了所有生成的 cmets 以使其更紧凑):

int main(void)

  HAL_Init();

  SystemClock_Config();

  MX_GPIO_Init();

  HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_2); //my code 1
  HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_2); //my code 2

  while (1)
  
      HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_2);
      HAL_Delay(1000);
  

当我单步执行代码时,一旦我单步执行“我的代码 2”,它将触发“我的代码 1”上的 GPIO,这将导致问题。我什至尝试过只运行一个完全生成的程序而不做任何修改,但问题仍然存在。这是一个快速测试,以查看程序是否确实在 mcu 上运行。它确实如此,并且触发了 GPIO。

调试器控制台输出:

Temporary breakpoint 1, main () at ../Core/Src/main.c:74
74        HAL_Init();

Program received signal SIGTRAP, Trace/breakpoint trap.
0x1fffecec in ?? ()

临时断点是程序开始的地方,然后我可以从那里运行。或者单步执行,结果都一样。

控制台输出:

Waiting for debugger connection...
Debugger connected
      -------------------------------------------------------------------
                        STM32CubeProgrammer v2.4.0                  
      -------------------------------------------------------------------

ST-LINK SN  : 34FF6E065250343816210143
ST-LINK FW  : V2J36S7
Voltage     : 3.22V
SWD freq    : 4000 KHz
Connect mode: Under Reset
Reset mode  : Hardware reset
Device ID   : 0x440
Device name : STM32F05x/F030x8
Flash size  : 64 KBytes
Device type : MCU
Device CPU  : Cortex-M0



Memory Programming ...
Opening and parsing file: ST-LINK_GDB_server_PEkdAh.srec
  File          : ST-LINK_GDB_server_PEkdAh.srec
  Size          : 4944 Bytes
  Address       : 0x08000000 


Erasing memory corresponding to segment 0:
Erasing internal memory sectors [0 4]
Download in Progress:


File download complete
Time elapsed during download operation: 00:00:00.627

Verifying ...

Download verified successfully 

完全错误:

Break at address "0x1fffecec" with no debug information available, or outside of program code.

这里有两张图片可能会有所帮助。正如我提到的,我对此很陌生。所以任何其他需要的信息请询问。提前致谢。

Debug View Disassembly

【问题讨论】:

【参考方案1】:

代码放置在0x08000000。 0x1ffecec 处没有用户代码。它是系统区域,可能会引导系统引导加载程序。说明BOOTx管脚接错了。

【讨论】:

你是绝对正确的。 BOOT0 接高电平,选择“系统内存”,我将 BOOT0 接地并选择“主闪存”。这解决了问题。 如何选择主闪存?我是 stm32 的新手,我没有找到任何关于它的信息。 来到这里时遇到了与 STM32CubeIDE 和黑色药丸 STM32F103C8T6 相同的问题...检查您的引导引脚 B0 和 B1。必须让我的 B0 和 B1 都低才能解决问题。谢谢! 希望它在工具中提供线索

以上是关于STM32CubeIDE 在地址“xxx”处中断,没有可用的调试信息,或在程序代码之外的主要内容,如果未能解决你的问题,请参考以下文章

STM32Cube IDE配置串口发送与接收

stm32mp1 Cortex M4开发篇1:stm32CubeIDE开发环境搭建

HAL库系列1.STM32CubeIDE下载与配置

STM32集成开发工具 | STM32CubeIDE介绍下载安装和使用教程

STM32CubeIDE 连接W5500模块作为TCPClient

如何利用stm32cubeide的原有工程改写代码