I am trying to run two PWM generators on the EK-TM4C123GXL LaunchPad. I have one of the PWM generators working (M1PWM0) but I have not been able to get M0PWM3 to operate and produce an output. Here is my code:
#define PWM_FREQUENCY 55000 int main() { volatile uint32_t ui32LoadPW0; volatile uint32_t ui32LoadPW1; SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ); ROM_SysCtlPWMClockSet(SYSCTL_PWMDIV_1); //------------------------------------------------------------------ // Setup PWM1 on port D0 ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM1); ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD); ROM_GPIOPinTypePWM(GPIO_PORTD_BASE, GPIO_PIN_0); ROM_GPIOPinConfigure(GPIO_PD0_M1PWM0); ui32LoadPW1 = (SysCtlClockGet() / PWM_FREQUENCY) - 1; MAP_PWMGenConfigure(PWM1_BASE, PWM_GEN_0, PWM_GEN_MODE_DOWN); PWMGenPeriodSet(PWM1_BASE, PWM_GEN_0, ui32LoadPW1); ROM_PWMPulseWidthSet(PWM1_BASE, PWM_OUT_0, ui32LoadPW1 / 2); ROM_PWMOutputState(PWM1_BASE, PWM_OUT_0_BIT, true); ROM_PWMGenEnable(PWM1_BASE, PWM_GEN_0); //------------------------------------------------------------------ // Setup PWM0 on port B5 MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0); MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); MAP_GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_5); MAP_GPIOPinConfigure(GPIO_PB5_M0PWM3); ui32LoadPW0 = (SysCtlClockGet() / PWM_FREQUENCY) - 1; MAP_PWMGenConfigure(PWM0_BASE, PWM_GEN_3, PWM_GEN_MODE_DOWN); MAP_PWMGenPeriodSet(PWM0_BASE, PWM_GEN_3, ui32LoadPW0); MAP_PWMPulseWidthSet(PWM0_BASE, PWM_OUT_3, ui32LoadPW0 / 2); MAP_PWMOutputState(PWM0_BASE, PWM_OUT_3_BIT, true); MAP_PWMGenEnable(PWM0_BASE, PWM_GEN_3); while(1) { } }
Looking at pin PD0 I see the 55KHz signal. But on pin PB5 I have no signal. Would anyone be able to tell me what I am doing wrong?
Thank you,