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.

[参考译文] MSP-EXP430FR2433:通过 driverlib 在不清除初始化设置的情况下复位计时器

Guru**** 2524550 points
Other Parts Discussed in Thread: MSP430FR2433

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/844186/msp-exp430fr2433-reset-timer-without-clearing-initialization-setting-via-driverlib

器件型号:MSP-EXP430FR2433
主题中讨论的其他器件:MSP430FR2433

您好!

在 UART 模式下、我有一个应用正在等待来自 eUSCI_A1的字符串。

在我的情况下、等待/r 或/r/n 对于确定是否接收到所有字符串并不实用;因此我决定为此目的使用计时器。

我的目的是在向上计数模式下初始化 Timer1_A3、在我通过 eUSCI_A1接收第一个字符时启动 Timer1_A3、并重新启动计时器(从零开始计数)每个新字符都会被接收到。 我将 CCR 设置为一个值、该值将在经过约25ms 时让计时器溢出、并且我将在 CCR 溢出中断中设置一个标志、指示该字符串已完全接收。

基本上、我想测量两个接收事件之间的时间、如果达到25ms、这意味着接收完成。

问题是、我没有看到从零显式重新启动计时器的选项。 TACLR 不是一个很好的选择、因为它也会清除计数方向、预分频器等其他定时器参数的初始化

有什么想法吗?

p. S。非常感谢通过 driverlib 提供的任何建议。 我不太喜欢使用寄存器名称。

提前感谢。

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

    出现函数 Timer_A_clear()来执行此操作。 它使用"|="、因此不会清除 TAxCTL 中的其他位。

    void Timer_a_clear (uint16_t baseAddress)
    {
    HWREG16 (baseAddress + OFS_TAxCTL)|= TACLR;
    } 

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

    实际上、我不认为是这样、根据文档、TACLR 本身会清除所有配置。

    来自《MSP430FR2433用户指南》第13.3.1节中的 TAxCTL 寄存器定义

    Timer_A 清零。 将该位置位将复位 TAxR、定时器时钟分频器逻辑(分频器设置保持不变)和计数方向。 TACLR 位自动复位并始终读为0。

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

    我不确定您对此描述的哪一部分感到担忧。

    "|="设置指示的位、而不更改其他位。 TACLR 会自动清除、因此您不必这么做。

    TACLR 复位预分频器计数器(内部)、但不是预分频器设置(ID)。 这是将计时器设置为0的含义的一部分。

    它还会清除计数方向、该方向仅与向上/向下计数模式相关、这也是将计时器设置为0的含义的一部分。

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

    噢。 我的。 真棒!

    非常感谢你帮助我理解我对这一发言的巨大误解。 棘手的问题是"预分频器计数器"、我将其误解为"预分频器设置"本身。

    再次感谢你。