This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Starterware:OMAP 1ms 计时器10配置冻结

Guru**** 2562120 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/596953/starterware-omap-1-ms-timer-10-configuration-freezing

工具/软件:Starterware

您好!

使用 M4的 Starterware 计时器示例、我们将软件组合在一起、对计时器10模块进行编程、使其充当1ms 计时器。

正常程序序列为:

系统加电并加载计时器配置软件

定时器配置软件强制使用 CM_L4PER_TIMER10_CLKCTRL 启用定时器模块、选择 SYS_CLK1_32K_CLK (也称为 FUNC_32K_CLK)作为源时钟。

2.配置定时器中断 XBar 并链接到 ISR

3.软复位定时器模块,然后根据 TRM 对必要的寄存器进行编程。

4.清除现有的中断标志、然后启用定时器

我们有时会在#3遇到问题。 发出软复位命令(使用 TIMERReset)后、我们尝试先加载 TPIR 寄存器、TDIR 寄存器、然后加载所有其他必要的寄存器。 问题是我们永远不会退出函数来写入 TNIR 寄存器。 由于选中 TimerWaitForWrite(),计时器配置似乎正在暂停。 这意味着 TPIR 寄存器尚未实际写入、对吧?

我们已经尝试在软复位后首先写入其他寄存器、但我们仍会在一段时间内每隔一次停止、因此它不是特定于 TPIR 的。 我们已手动检查是否执行了 RESET 命令、即使复位 API 函数检查以使复位在退出之前已完成、这看起来不错。 使用单独的 CPU 内核来帮助调试发生错误时、我们尝试访问其他计时器10寄存器、尝试查找错误源、但对计时器10寄存器的任何读取尝试都会冻结系统。 这与未启用计时器模块的情况类似、但我们选中了 CM_L4PER_TIMER10_CLKCTRL、读取值表示它仍处于启用状态。

计时器10模块冻结是否有其他原因? 我们可以检查什么以调试该问题? 计时器模块不会始终冻结、当它不冻结时、1ms 计时器工作良好、因此不确定为什么有时会发生这种情况。  

谢谢、
胡安