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.

[参考译文] TM4C1294NCPDT:PWM:LED 自动闪烁

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1444611/tm4c1294ncpdt-pwm-blink-led-automatically

器件型号:TM4C1294NCPDT

工具与软件:

您好!

我的 Tiva 上有 PWM 模块。  

我使用以下代码(根据 PWM 反相示例)及其工作方式。

但是我想生成 PWM 模块、这样我就不需要 while (1)循环、我想所有 PWM 系统将 在固定占空比和固定频率下自动工作、而无需我处理和执行 SysCtlDelay。  

我该怎么做?

我附加了代码。

谢谢!

Tzipi

e2e.ti.com/.../PwmTiva.txt

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

    您好!

    [报价 userid="543483" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1444611/tm4c1294ncpdt-pwm-blink-led-automatically ]但是我想生成 PWM 模块、这样我就不需要 while (1)循环了、我想让所有 PWM 系统都能 在固定占空比和固定频率下自动运行、[/报价]

     TivaWare PWM_INVERT 几乎能满足您的需求。 它只需设置 PWM 周期和占空比。 在 while 环路中、它唯一做的是反转极性。 您所需要的就是删除 while (1)中的所有内容、您将看到一个占空比为25%的恒定250Hz PWM。  

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

    您好!

    我就这么做了-和 LED 打开,但不闪烁... 也许它应该是不同的 Hz 吗? 或不同的占空比呢?

    谢谢!

    Tzipi

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

    你(们)好

    且 LED 指示灯亮起、但不闪烁

    此示例生成250Hz 的 PWM。 您是否认为人眼能够以这种速率看到 LED 闪烁? 为什么不尝试以下使用 PF0上的 PWM_0使 LED 闪烁的示例? 要直观地看到 LED 闪烁、您需要减慢周期。  

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    int
    main(void)
    {
    uint32_t ui32PWMClockRate;
    g_ui32SysClock = MAP_SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ |
    SYSCTL_OSC_MAIN |
    SYSCTL_USE_OSC
    ), 25000000);
    //
    // Initialize the UART.
    //
    ConfigureUART();
    ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    您好!

    我完全按照您在示例中写的操作、仅使用 PG4上的 PEM_1、我仍然看到 LED 亮起、就是这样... 它不会闪烁...  

    你有什么想法吗?

    谢谢!

    Tzipi

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

    您好!

     我目前正在度假一整周。 我会在今天稍后时间答复你的质询。 请预计会延迟响应。

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

    您好!

     您是否在 PF0的 LaunchPad 上尝试过我的代码? 我可以看到 LaunchPad 上的 LED 闪烁。  

     为什么不使用示波器并查看您的 PG4? 它显示什么?

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

    我能够使 LED 闪烁!  我的设置出了问题–我使用 PWM4、所以我不得不使用 PWN_GEN_2 (我在上面的代码中有误-我使用了 PWM_GEN_1)。

    无论如何、如果我希望 LED 每秒闪烁一次而不是高速闪烁、我应该如何设置周期和脉冲宽度?  

    我将时钟设置为:

    G_ui32SysClock = MAP_SysCtlClockFreqSet (SYSCTL_XTAL_25MHz |
    SYSCTL_OSC_MAIN |  SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480    
    )、120000000);

    我的其余代码如您的示例所示:

    MAP_PWMClockSet (PWM0_BASE、PWM_SYSCLK_DIV_64);

    ui32PWMClockRate = g_ui32SysClock / 64;


    MAP_PWMGenConfigure (PWM0_BASE、PWM_GEN_2、
    PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_NO_SYNC);


    MAP_PWMGenPeriodSet (PWM0_BASE、PWM_GEN_2、(ui32PWMClockRate / 8));

    MAP_PWMPulseWidthSet (PWM0_BASE、PWM_OUT_4、
    MAP_PWMGenPeriodGet (PWM0_BASE、PWM_GEN_2)/2);


    MAP_PWMOutputState (PWM0_BASE、PWM_OUT_4_BIT、TRUE);


    MAP_PWMGenEnable (PWM0_BASE、PWM_GEN_2);

    谢谢!!!

    Tzipi

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

    您好、Charles

     如果希望 LED 每秒闪烁一次而不是高速闪烁、应如何设置周期和脉冲宽度?  

    我的代码在上面。

    谢谢!

    Tzipi

x 出现错误。请重试或与管理员联系。