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.

[参考译文] TM4C123GH6PM:调整运行时的计时器周期

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1316845/tm4c123gh6pm-adjusting-timer-period-at-runtime

器件型号:TM4C123GH6PM

您好!

我正在初始化计时器、如下所示:

    MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);
    MAP_IntMasterEnable();
    MAP_TimerConfigure(TIMER0_BASE, TIMER_CFG_PERIODIC);
    MAP_TimerLoadSet(TIMER0_BASE, TIMER_A, ui32SysClkFreq / 50);
    TimerIntRegister(TIMER0_BASE, TIMER_A, Timer0IntHandler);
    MAP_IntEnable(INT_TIMER0A);
    MAP_TimerIntEnable(TIMER0_BASE, TIMER_TIMA_TIMEOUT);
    MAP_TimerEnable(TIMER0_BASE, TIMER_A);

它每秒调用 Timer0IntHandler 50次。 我仍然可以调节计时器的频率吗? 我已经查看外设库文档并发现:

这意味着"如果定时器正在运行、那么该值可立即加载到定时器中"-可在定时器运行时调节其周期? 我错了吗?

另外、设置新的加载值意味着计数器应该会复位、那么计时器的剩余 ms 会重新启动吗?

我正在寻找一种在不重置剩余时间的情况下动态调整频率至+/- 1%以内的方法。 也许我可以从它添加或减去吗?

非常感谢您提出任何想法。

此致、

C.A.

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

    您好!

     请参阅有关如何更新负载值和匹配值的数据表。 load / match 值可以在下一个周期或下一个超时后更新。 我建议您下次使用新值生效。 使用 TimerUpdateMode()指定新值何时生效。  

    如果软件在计数器递减的过程中更新了 GPTMTnILR 或 GPTMTnPR 寄存器、
    计数器在下一个时钟周期加载这个新值、并且从这个新值开始继续计数
    如果 GPTMTnMR 寄存器中的 TnILD 位被清零。 如果 TnILD 位置位、计数器将
    下一个超时后的新值。 如果软件更新了 GPTMTnILR 或 GPTMTnPR 寄存器
    在计数器递增计数时、超时事件会在下一个周期更改为新值。
    如果软件在计数器递增计数时更新了 GPTM Timer n 值(GPTMTnV)寄存器
    或者递减、计数器会在下一个时钟周期加载新值、并从
    新值。 如果软件更新了 GPTMTnMATCHR 或 GPTMTnPMR 寄存器、新值
    将在下一个时钟周期反映出来、前提是 GPTMTnMR 寄存器中的 TnMRSU 位清零。 如果
    TnMRSU 位置位、新值在下一个超时后才会生效。

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

    您好!

    设置超时模式以调整频率后、我需要再次使用 TimerLoadSet、还是需要访问使用 hwreg 提及的寄存器并对其进行修改?

    我看过 driverlib/timer.c 的源代码、在 timerLoadSet 中、它基本上做了:

    HWREG (ui32Base + timer_O_TAILR)= ui32Value;

    此致、

    C.