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.

[参考译文] MSP432P401R:Timer32 -延迟功能

Guru**** 2573695 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/607125/msp432p401r-timer32---delay-function

器件型号:MSP432P401R

您好!

我正在使用 Timer32创建一个简单的延迟 API、用于我的未来项目。

它似乎在1s 持续时间内工作(我手头没有示波器来检查较小的值。)。

我想 µs 一些有关代码的建议(使用任何毫秒/μ s 持续时间值是否足够?)、如果存在更好、更轻松的延迟方法(可能是使用 Timer32中断、甚至没有 Timer32?)。

备注:我的未来项目所需的最短延迟时间为10µs μ s。

#include "driverlib.h"

void delay_init (void)
{
Timer32_initModule (TIMER32_0_base、TIMER32_prescaler_1、TIMER32_32位、TIMER32_PERiod_MODE);

Timer32_disableInterrupt (TIMER32_0_BASE);
}

void delay (uint32_t dures_us)
{
Timer32_haltTimer (TIMER32_0_BASE);
Timer32_setCount (TIMER32_0_BASE、24 * DURAY_us);
Timer32_startTimer (TIMER32_0_base、true);

while (Timer32_getValue (TIMER32_0_BASE)> 0);
}

int main (void)
{
WDT_A_HOLDTimer();

CS_setDCOCenteredFrequency (CS_DCO_FREQUENCY 24); // 24000000 Hz
CS_initClockSignal (CS_MCLK、CS_DCOCLK_select、CS_clock_divider);// 24000000 Hz

GPIO_setAsOutputPin (GPIO_PORT_P2、GPIO_PIN0);
GPIO_setOutputLowOnPin (GPIO_PORT_P2、GPIO_PIN0);

delay_init();

while (1)
{
延迟(1 * 1000 * 1000);// 1

GPIO_toggleOutputOnPin (GPIO_PORT_P2、GPIO_PIN0);
}
} 

谢谢、

Michaël μ A

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    对于您正在做/需要的事情,此时您可能只需使用__delay_cycles ()内在函数。 无需浪费计时器来执行延迟,尤其是32位计时器。 请参见 SLAU182和/或 SLAU646。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jeff:

    感谢您的回答。

    我以为 MSP432不存在'_delay_cycles ()'、但我错了。

    它易于使用、但存在一些问题/限制:
    *在延迟期间执行的操作会增加其持续时间
    *持续时间必须是编译时常量

    我想我将继续使用 Timer32来实现 delay()函数,Timer_A 对于我的项目来说已经足够了。

    ------------------------------------------
    关于上述代码、可能使用 LowPowerMode + Timer32是最佳解决方案、而不是对 Timer32值进行轮询。

    Michaël μ A