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.

[参考译文] MSP430F5524:关闭和重新启动计时器的正确过程

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/840998/msp430f5524-proper-procedure-to-turn-off-and-restart-timer

器件型号:MSP430F5524

你(们)好

我将生成 PWM 来打开风扇。 这是代码

TA2CCR0 = 1000;// PWM 周期
TA2CCTL1 = OUTMOD_7;// CCR1复位/置位
TA2CCR1 = 900;//384;// CCR1 PWM 占空比
TA2CCTL2 = OUTMOD_7;// CCR2复位/置位
TA2CCR2 = 900;//128 // CCR2 PWM 占空比
TA2CTL = tassel_2 + MC_1 + TACLR;// SMCLK、向上计数模式、清除 TAR

我希望能够打开和关闭它。 它应重新开始生成具有相同占空比的相同 PWM。 这是关断代码。

//是否需要这些行?

//TA2CCR0 = 0;                                                                                                                              //TA2CCTL1 = 0;

//TA2CCR1 = 0;
//TA2CCTL2 = 0;
//TA2CCR2 = 0;
//TA2CTL = tassel_2 + MC_1 + TACLR;  

TA2CTL &=~(MC_1); //此行是否足够?

如果我只是切换并设置 MC_1或者应该将其他寄存器(捕获比较寄存器、TACTL 等)设置为0并重新初始化它们、这就足够了吗?

谢谢

Abhishek

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

    您好、Abhishek、

    您可以通过将 MC 寄存器设置为00来关闭 PWM、如下所示:

    TA2CTL = tassel_2 + MC_0 + TACLR;

    谢谢。

    此致

    Johnson

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

    你(们)好,约翰逊

    该链接建议我执行 TA2CTL &=~(MC_1)、而不是 TA2CTL |= MC_0

    https://e2e.ti.com/support/microcontrollers/msp430/f/166/t/311740?How-to-property-disable-a-timer-

    我的问题还在于是否需要将其他寄存器设置为0、然后使用旧值重新初始化、或者只更改 TA2CTL 是否足够。

    谢谢、此致

    Abhishek

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

    设置 MC=0会冻结计时器。

    如果您执行 PWM、输出引脚将保持其当前状态。 有时这就是您想要的。 不过、根据您的说法、我怀疑您希望他们回到"空闲"(低电平)。 例如、"TA2CCTL2=0 "所做的是设置 OUTMOD=0和 OUT=0、从而强制将 TA2.2引脚置为低电平。 可能没有理由设置、例如 TA2CCR2=0、但它不会伤害任何东西。

    如果您正在进行捕获(我认为这不是您的情况)、则"TA2CCTL2=0会设置 CAP=0、因此您不会从 TA2.2/CCI2引脚活动中获得杂散中断。 (此处再次设置 CCR=0是不需要的。)

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

    你好 Bruce

    您的建议有效。 将 TA2CCTL2设置为0似乎就是这样。  

    谢谢

    Abhishek