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.

[参考译文] TM4C1230H6PM:定时器、预分频

Guru**** 2533560 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/834699/tm4c1230h6pm-timer-prescale

器件型号:TM4C1230H6PM

我想将 TIMER0_BASE 的 TimerA 与 预分频一起使用、代码如下:

SysCtlPeripheralEnable (SYSCTL_Periph_TIMER0);
while (!SysCtlPeripheralReady (SYSCTL_Periph_TIMER0)){}

TimerConfigure (TIMER0_BASE、TIMER_CFG_A_PERIODICASE);
TimerPrescaleSet (TIMER0_BASE、TIMER_A、128);
TimerLoadSet (TIMER0_BASE、TIMER_A、8000000);

TimerIntRegister (TIMER0_BASE、TIMER_A、pfnHandler);
TimerIntEnable (TIMER0_BASE、TIMER_TINA_TIMEOUT);
TimerEnable (TIMER0_BASE、TIMER_A);

为什么使用1S 触发该计时器。 因为我已经将预分频设置为128、所以它是否应该由2S 触发(它的频率变为40MHz)????

感谢您的提问

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

    您好!

    对于启动器而言、您不会在半宽模式下使用计时器。 请参阅 driverlib timer.c 文件中针对 TimerPrescaleSet 的注释:

    //! 此函数用于配置输入时钟预分频器的值。
    //! 预分频器仅在半宽模式下工作、用于扩展
    //! 半宽定时器模式的范围。 预分频器提供最少
    //! 在周期和单次触发模式下递减计数时的有效位;在所有
    //! 在其他模式下、预分频器提供最高有效位。 

    您需要使用以下配置将计时器设置为在半宽模式下工作、这样您就可以使用 TimerPrescaleSet:

    TimerConfigure (TIMER0_BASE、TIMER_CFG_SPLIT_PAIR | TIMER_CFG_A_PERIODICASE); 

    不过、您需要注意一个捕获、即您的输入为80000000时、半定时器寄存器将会溢出。

    因此、您需要找到一种方法、将其缩放到小于 65535的值、以适应16位宽的半定时器寄存器。

    希望这些信息足以让您找到实现应用的方法、如果您有其他问题、请告诉我

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

    您好 Ralph、

    相信您(完全)正确-但在本例中-接受海报的愿望是否明智?

    [报价用户="user58362"]我想将 TIMER0_BASE 的 TimerA 与 预分频一起使用

    正如您所指出的-他的"模板"将:

    • "快速且重复"溢出他的"半定时器"-需要"级联(溢出)计数"才能达到他的目标
    • 增加"预分频器"的复杂度
    • 因此、将证明"在高效且轻松的解决方案之外"

    相反-选择"全宽"(32位计时器)可以轻松适应80、000、000次计数-同时"缺失"任何对"预分频器!"的需求

    经验告诉我们、当海报出现时(无法解释、可能不合理)"需求/愿望"-很少是(最好考虑)"成功之路!"

    毫无疑问-海报使用全宽计时器-最佳选择可实现"加速、优化和增强"解决方案!

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

    感谢 Ralph Jacobi 工程师的回复。 让我知道如何正确配置定时器的预分频。

    我还要感谢 CB1_MOBILE。 正如他所说的那样、即使我选择了定时器的最低预分频器、这对于我的项目也是不够的。  最后、我必须为 项目使用全宽计时器。

    感谢所有帮助我的人