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.

[参考译文] TM4C1233H6PGE:TM4C上的1MHz计时器(1 usec tick)

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1098394/tm4c1233h6pge-1mhz-timer-1-usec-ticks-on-tm4c

部件号:TM4C1233H6PGE
主题:TM4C123中讨论的其他部件

在之前关于这些板上的通用计时器的讨论中, 由于我不能回答其中的任何一个问题,因为它们现在都被锁住了,我想我会再次就它们展开讨论,因为我们在这方面似乎没有成功的可能性。

我已经阅读了关于这个主题的所有可能的内容,但仍然想知道,“他们怎么会把最基本的功能搞错了?”  听听我的声音。

我们只需要做以下事情: 从80MHz系统时钟,我们需要一个32位寄存器来计数,或勾选,或者您以1MHz的速率来表达(更改)。  这意味着计时器的LSB应每经过1秒的时间增加一次。  传统的预分频器到计时器将规定预分频器的设置值为80,该预分频器将每80个系统时钟周期触发一次计数器。  然后,我们需要能够在程序的整个生命周期中读取计时器的原始值,即使它绕过了程序。  无符号整数数学很容易允许溢出,只要只溢出一次。  由于我们的延迟时间不会超过1小时12分钟(32位计数器以1MHz运行的最长时间),这在市场上的任何其他处理器中都是可行的。  就是这样。  没有比这更简单的了。  我对TivaWare,图书馆,投入其中的努力没有任何反对意见。  我不想将此对话变成关于编程风格的讨论。  虽然我不打算直接访问注册表,因为我想使用TivaWare库,但如果TivaWare本身不支持它,我很乐意这样做。  只需告诉我们如何实现这一点。  请。

我们不需要中断,当然也不想配置系统计时器来中断我们的处理器每秒100万次以增加软件中的计数器值。  这是绝对疯狂的,TI在其它线程上也提出过这种建议。  中断绝对是100 % 的问题。  通过查询当前系统时钟(或以编程方式指定它)对每个读取操作进行乘法和缩放也绝对是不可能的。  计时器应该能够配置为您选择的任何分辨率和时基。  否则,1美元或1美元左右的小延迟也不必要地产生上述计算的间接费用。  我只想在软件中读取1MHz计数器的当前值,并通过简单减法(1个时钟周期)将其与先前已知的值进行比较,并与持续时间(也是一个时钟周期)进行比较。 这种乘法和除法运算都不能得出答案。  好吗?

我希望有人能用非常简单和明确的语言向我解释,使用任何口味的TSMC处理器,使用所谓的通用计时器,是如何实现这一点的。

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

    您好,

    常规1233常规预分频器到计时器的预分频器会指示系统每80个周期的设置值[]。

    TM4C123中有两种不同类型的通用计时器。 一个是16/32位GTPM,另一个是32/64位GPTM。 请参阅下文。  

    上述情况的摘要如下。  

     1.如果要在32位模式下使用16/32位GPTM,则不能使用预分频器。  

     2. 如果要在16位模式下使用16/32位GPTM,则可以使用8位预缩放器 来扩展 16位计数器。

     3. 如果要在64位模式下使用32/64位GPTM,则不能使用预分频器。

     4.如果要在32位模式下使用32/64位GPTM,则可以使用16位预缩放器来扩展32位计数器。  

    根据以上总结,您的选择将是第4位。 您可以使用值为80的16位预分频器。 当预计算器计数器倒计数到0时,它将增加32位计数器。 您也可以尝试 #1,尽管它没有预分频器。 您可以在读取计数器值时屏蔽较低的位。 例如,您可以使用0x4F (十进制79)进行掩码。  

      

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

    谢谢你Charles。  记录和实施这一边缘的方式非常简单,这些论坛上的一些令人沮丧的反应也是如此,我们面前还有多少工作要做。  我们最终通过使定时器从UINT32_MAX倒计时并定期重置自身来使其工作。  如此简单的使用案例是多么难以设置 ,这超出了我们的理解水平。  我们几乎不得不切换到另一个处理器来处理这种微不足道的事情。  再次感谢。