arm - 未配置STM32 WWDG中断触发

标签 arm embedded gnu stm32 cortex-m3

由于许可证问题,我有一个要从Keil IDE移植以使用GNU工具链构建的应用程序。我已经能够成功在设备上设置,构建,刷新和运行应用程序。

GNU端的应用由于某种原因被卡在WWDG的弱链接IRQ处理程序中,这是一个无限循环。该应用程序不启用WWDG,默认情况下在重置时被禁用。我还验证了配置寄存器处于其默认启动值。

除编译器外,唯一的区别是链接器和启动文件。但是,两个工具链使用的启动文件和链接器文件都是STM默认生成的。

知道是什么原因造成的吗?我快要结束了。

使用stm32f103XX,让我知道是否有其他信息会有所帮助。

编辑:
使用下面的注释,我可以确定实际上是被触发的HardFault_Handler。
我在下面包括了backtrace输出,如果有帮助的话

GDB BT:

0 HardFault_Handler()

1(称为信号处理程序)

2 0x720a3de in ?? ()

3 0x80005534在foo()中

回溯停止:前一帧与此帧相同(损坏的堆栈?)

尽管我不是gdb专家,但有2件事对我很重要。 1)foo不是函数,它是char的const数组,并且2)0x0720a3de不是有效的内存地址,闪存地址范围始于0x08000000

最佳答案

因此,感谢D Krueger的出色表现。我能够弄清楚HardFault_Handler是实际被调用的东西。因此,任何偶然发现此帖子的人都可以通过编写临时功能来掩盖可能的罪魁祸首,即HardFault,来验证真正调用了哪个IRQ。 IRQ调用的真正问题是memcpy的内存访问错误,我接下来将要解决它。

关于arm - 未配置STM32 WWDG中断触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27623885/

相关文章:

c - 一种适合在嵌入式系统上实现的简单可靠的P2P通信方法

makefile 独立@符号和目录关键字

gcc - 如何生成未对齐的访问条件以及如何使用 gcc 检测它?

c - 在 omap4460 上设置 gptimer1

ios - 在 iOS 上是否有检测 CPU 特性的 API?

debugging - 使用 openocd 闪存和调试 STM32F7 发现

c++ - "save_and_cli(flag)"是如何工作的?

c - 在 C "invalid operands to binary expression (' size_t'(又名 'unsigned long' )和 'char *' )中重新创建 strlcat 函数”

c++ - 使用 cmake 设置 gsl 时出现问题

Azure ARM 从变量获取值