工具与软件:
您好!
我的 Tiva 上有 PWM 模块。
我使用以下代码(根据 PWM 反相示例)及其工作方式。
但是我想生成 PWM 模块、这样我就不需要 while (1)循环、我想所有 PWM 系统将 在固定占空比和固定频率下自动工作、而无需我处理和执行 SysCtlDelay。
我该怎么做?
我附加了代码。
谢谢!
Tzipi
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.
工具与软件:
您好!
我的 Tiva 上有 PWM 模块。
我使用以下代码(根据 PWM 反相示例)及其工作方式。
但是我想生成 PWM 模块、这样我就不需要 while (1)循环、我想所有 PWM 系统将 在固定占空比和固定频率下自动工作、而无需我处理和执行 SysCtlDelay。
我该怎么做?
我附加了代码。
谢谢!
Tzipi
您好!
[报价 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 闪烁、您需要减慢周期。
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); MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); MAP_GPIOPinConfigure(GPIO_PF0_M0PWM0); MAP_GPIOPinTypePWM(GPIO_PORTF_BASE, GPIO_PIN_0); MAP_PWMClockSet(PWM0_BASE, PWM_SYSCLK_DIV_64); ui32PWMClockRate = g_ui32SysClock / 64; MAP_PWMGenConfigure(PWM0_BASE, PWM_GEN_0, PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_NO_SYNC); MAP_PWMGenPeriodSet(PWM0_BASE, PWM_GEN_0, (ui32PWMClockRate / 8)); MAP_PWMPulseWidthSet(PWM0_BASE, PWM_OUT_0, MAP_PWMGenPeriodGet(PWM0_BASE, PWM_GEN_0) / 2); MAP_PWMOutputState(PWM0_BASE, PWM_OUT_0_BIT, true); MAP_PWMGenEnable(PWM0_BASE, PWM_GEN_0); while(1) { } }
您好!
我完全按照您在示例中写的操作、仅使用 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