我和其他朋友一样,使用ST F4-Discovery板已有一段时间了。我们都有同样的问题。我们使用的是Keil IDE(使用4.3到4.7之间的不同版本)。每当我们使用断点和秒表计时时,它在模拟模式下都能正常工作。但是,当我们在板上调试并运行相同的代码时,秒表从不报告正确的时序。它实际上是随机的。有谁知道问题是什么?
由于
答案 0 :(得分:1)
要解决秒表的问题,请转到:Tarjet选项 - 调试 - 设置 - 跟踪 - 核心时钟,并将频率调整为72MHz或处理器核心。
答案 1 :(得分:1)
秒表基于内部寄存器SEC。似乎存在一个错误,如果未显示注册窗口,则不会更新秒表值。运行调试时,选择View | Register窗口,确保可以看到SEC寄存器值更新。状态栏中的秒表现在也应该更新。
答案 2 :(得分:1)
我在很晚的时候找到了答案。它与内部调试电路有关。默认情况下,当我们在调试模式下遇到断点但是继续计数时,定时器外设不会停止。这就是我们使用秒表在定时器中断实例之间保持随机测量间隔的原因。为了获得精确的时序,我们需要调试电路来强制定时器外设在达到断点后停止计数,并在我们跳过它后再继续。这可以通过编写此代码来完成:
SET_BIT(DBGMCU->APB1FZ, DBGMCU_APB1_FZ_DBG_TIM3_STOP);
指示APB1总线上的定时器3在断点处停止计数。