1

和许多其他朋友一样,我使用 ST F4-Discovery 板已经有一段时间了。我们都有同样的问题。我们使用的是 Keil IDE(使用了从 4.3 到 4.7 的不同版本)。每当我们使用断点和秒表计时,它在模拟模式下都能完美运行。但是,当我们在板上调试并运行相同的代码时,秒表永远不会报告正确的时间。它实际上是随机的。有谁知道问题是什么?

谢谢

4

3 回答 3

2

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

于 2014-10-03T11:38:52.243 回答
1

要解决秒表问题,请转到:Tarjet 选项 - 调试 - 设置 - 跟踪 - 核心时钟并将频率调整为 72MHz 或处理器的核心。

于 2013-04-11T10:49:31.037 回答
1

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

SET_BIT(DBGMCU->APB1FZ, DBGMCU_APB1_FZ_DBG_TIM3_STOP);

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

于 2016-02-21T07:40:45.077 回答