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.

为什么我的PWM没有输出?

Other Parts Discussed in Thread: TM4C123GH6PM

void Init_PWM(void)
{
// 设置PWM时钟和系统时钟一致
SysCtlPWMClockSet(SYSCTL_PWMDIV_1);

// 使能PWM外设
SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0);
SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM1);

SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
//设置对应管脚的PWM信号功能
GPIOPinConfigure(GPIO_PB7_M0PWM1);
GPIOPinConfigure(GPIO_PB4_M0PWM2);
GPIOPinConfigure(GPIO_PF1_M1PWM5);
GPIOPinConfigure(GPIO_PF2_M1PWM6);

//设置PWM信号端口
GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_4 );
GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_7 );
GPIOPinTypePWM(GPIO_PORTF_BASE, GPIO_PIN_1 );
GPIOPinTypePWM(GPIO_PORTF_BASE, GPIO_PIN_2 );

//PWM生成器配置
PWMGenConfigure(PWM0_BASE, PWM_GEN_0, PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_NO_SYNC);
PWMGenConfigure(PWM0_BASE, PWM_GEN_1, PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_NO_SYNC);
PWMGenConfigure(PWM1_BASE, PWM_GEN_2, PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_NO_SYNC);
PWMGenConfigure(PWM1_BASE, PWM_GEN_3, PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_NO_SYNC);

//设置PWM信号周期
PWMGenPeriodSet(PWM0_BASE, PWM_GEN_0, 320000);// N = (1 / f) * SysClk,50hz
PWMGenPeriodSet(PWM0_BASE, PWM_GEN_1, 320000);
PWMGenPeriodSet(PWM1_BASE, PWM_GEN_2, 320000);
PWMGenPeriodSet(PWM1_BASE, PWM_GEN_3, 320000);

//设置PWM信号占空比
// 3/8
PWMPulseWidthSet(PWM0_BASE, PWM_OUT_1, 120000);
PWMPulseWidthSet(PWM0_BASE, PWM_OUT_2, 120000);
PWMPulseWidthSet(PWM1_BASE, PWM_OUT_5, 120000);
PWMPulseWidthSet(PWM1_BASE, PWM_OUT_6, 120000);

// 使能PWM输出端口
PWMOutputState(PWM0_BASE, PWM_OUT_1_BIT | PWM_OUT_2_BIT , true);
PWMOutputState(PWM1_BASE, PWM_OUT_5_BIT | PWM_OUT_6_BIT, true);

// 使能PWM生成器
PWMGenEnable(PWM0_BASE, PWM_GEN_0);
PWMGenEnable(PWM0_BASE, PWM_GEN_1);
PWMGenEnable(PWM1_BASE, PWM_GEN_2);
PWMGenEnable(PWM1_BASE, PWM_GEN_3);