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.

[参考译文] TM4C129ENCPDT:在周期模式中使用计时器、但用于单次触发应用

Guru**** 2487425 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/738546/tm4c129encpdt-use-timer-in-periodic-mode-but-for-one-shot-application

器件型号:TM4C129ENCPDT

我的应用在概念上需要有效的单次触发、但我还需要让计时器在中断期间继续运行、以便我可以测量单次触发后的时间、直到满足我的条件。

在阅读文档时、我显然需要将计时器置于周期模式、以便它继续运行。 然后、我可以读取计时器值来测量第二个条件的时序。

我的问题是、我似乎无法重置计时器并在第二次出现时再次从零开始计时。 计时器第一次运行完美、但后续事件看起来是随机的、就像周期计时器在不重新启动的情况下保持运行一样。 我使用逻辑分析仪来查看内部和外部事件的相对计时。

在我的代码中,我在完成计时器后调用 TimerDisable()和 TimerIntClear ()。

然后,当我想要下一个“一次性”时,我调用 TimerIntClear ()、TimerLoadSet ()、TimerEnable()和 TimerIntEnable()。

我将计时器设置为_periodical_up 模式、我有一点怀疑不支持该模式。

我的问题有两个方面:

a)当我完成"单次触发"时、我该如何处理周期计时器以强制它停止、尤其是当我想重复该过程时、如何强制它从零开始再次计数?

b)对于我来说、使用_periode_up 来测量达到计时器计数后的时间量是最有意义的、但是如果不支持或不正确、那么我应该使用哪种算法?

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

    您好 Brian、

    关于 A 点、这是 TivaWare 产品中的一个小缺口。 一位以前的客户通过制作自己的 API 来解决了这个问题、从而允许他们将所需的定时器值直接手动加载到寄存器中。 这也应该对您有效。 他们共享代码的文章是: e2e.ti.com/.../1518559

    关于 B 点、我想说这种方法很好、尤其是当您在需要重新启动时包含将定时器值设置为0的功能时。

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

    谢谢。 我会尝试这个。

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