2013-04-10 74 views
1

我一直在使用ST F4-Discovery板一段时间,就像很多其他朋友一样。我们都有同样的问题。我们使用Keil IDE(使用4.3至4.7版本的不同版本)。每当我们使用断点和秒表计时时,在模拟模式下它都能很好地工作。但是,当我们在板上进行调试并运行相同的代码时,秒表从不报告正确的时间。它实际上是随机的。有谁知道问题是什么?Keil IDE秒表不能在调试模式下工作

感谢

回答

1

我在很晚的时候找到了答案。它与内部调试电路有关。默认情况下,当我们在调试模式下打断点但是继续计数时,定时器外设不会停止。这就是为什么我们使用秒表持续获得定时器中断实例之间的随机测量间隔。为了获得准确的时序,我们需要调试电路来强制定时器外设在我们到达断点时停止计数,并且一旦我们跨过断点就恢复。这可以通过编写以下代码来完成:

SET_BIT(DBGMCU->APB1FZ, DBGMCU_APB1_FZ_DBG_TIM3_STOP); 

它指示APB1总线上的定时器3在断点处停止计数。

1

为了解决秒表的问题,请访问:Tarjet选项 - 调试 - 设置 - 跟踪 - 核心时钟和频率调整为你的处理器的时钟频率72MHz或核心。

+0

它已正确设置。同样的问题。只是随机数字。这不是一个孤立的问题。我认识的所有人(超过一打)都有同样的问题。 – 2013-04-11 13:42:34

1

秒表是基于SEC的内部寄存器。似乎有一个错误,如果注册窗口不显示,那么秒表值不会更新。调试运行时,选择查看|注册窗口,并确保您可以看到SEC寄存器值的更新。状态栏中的秒表现在也应该更新。

+0

令人惊讶的是,这为我工作。多奇怪的错误... – 2017-08-23 09:44:02

相关问题