STM32 WWDG中断射击未配置时 [英] STM32 WWDG interrupt firing when not configured

查看:359
本文介绍了STM32 WWDG中断射击未配置时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有我从基尔IDE移植到建立与GNU工具链,由于许可证问题的应用程序。我已经成功地能够建立,构建,闪光灯和在设备上运行应用程序。

I have an application that I am porting from the Kiel IDE to build with the GNU tool chain due to license issues. I have successfully be able to set up, build, flash and run the application on the device.

在GNU端的应用程序是出于某种原因被卡住在弱链接的IRQ处理程序WWDG这是一个无限循环。该应用程序不启用WWDG,它在默认情况下复位被禁用。我也已经验证了配置寄存器处于它们的默认启动值。

The application on the GNU side is for some reason is getting stuck in the weak linked IRQ handler for the WWDG which is an infinite loop. The application does not enable the WWDG, and it is disabled at reset by default. I have also verified that the configuration registers are at their default startup values.

唯一的区别,比编译其它,是连接子和启动文件。但是,这两个由双方工具链使用的启动文件,链接文件是STM生成的默认值。

The only difference, other than compilers, are the linker and startup files. However, both the startup files, and linker files used by both tool chains are defaults generated by STM.

任何想法可能会导致什么呢?我对我的智慧在这里结束。

Any idea what may be causing this? I'm about at my wits end here.

使用stm32f103XX,让我知道如果任何其他信息将是有益的。

Using the stm32f103XX, let me know if any other information would be helpful.

编辑:
使用下面的评论我能够assertain,它其实是被触发HardFault_Handler。
我有以下包括回溯输出,如果可能的帮助。

Using the comments below I was able to assertain that it is in fact the HardFault_Handler that is being triggered. I have include the backtrace output below if that may be of help

GDB BT:

0 HardFault_Handler()

0 HardFault_Handler ()

1(被称为信号处理器)

1 (signal handler called)

2 0x720a3de的? ()

2 0x720a3de in ?? ()

3 0x80005534中富()

3 0x80005534 in foo ()

回溯停止:(?腐败栈)previous框架相同此帧

Backtrace stopped: previous frame identical to this frame (corrupt stack?)

2的事情站出来对我来说,虽然IM没有GDB的专家。 1)foo是不是一个函数,这是字符的一个常量数组和2)0x0720a3de不是flash地址范围开始于0x08000000一个有效的内存地址

2 things stand out to me, though im no gdb expert. 1) foo is not a function, it is a const array of chars and 2) 0x0720a3de is not a valid memory address the flash address range starts at 0x08000000

推荐答案

所以,由于在裤子用D克鲁格踢。我能想出的HardFault_Handler是什么实际上被调用。所以,任何人对这个职位失蹄,验证的IRQ是真正被写入临时职能,以包括可能的罪犯,即所谓的HardFault。为IRQ调用真正的问题是memcpy的记性不好访问的,我对我的方式来解决下一个

So thanks to the kick in the pants by D Krueger. I was able to figure out that the HardFault_Handler was what was actually being called. So, anyone that stumbles on this post, verify which IRQ is truly being called by writing temporary functions to cover the likely culprits i.e. HardFault. The true issue for the IRQ call is a bad memory access by memcpy which I am on my way to solving next.

这篇关于STM32 WWDG中断射击未配置时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆