void PWM0_Configure(void)
{
//使能PWM外设
SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM);
//使能GPIO管脚
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
//配置GPIO管脚的PWM复用功能
GPIOPinConfigure(GPIO_PD2_WT3CCP0);
//选择管脚作为硬件外设控制
GPIOPinTypePWM(GPIO_PORTD_BASE,GPIO_PIN_2);
//设置PWM系统时钟
SysCtlPWMClockSet(SYSCTL_PWMDIV_1);
//配置pwm模块的工作模式
PWMGenConfigure(PWM_BASE,PWM_GEN_0,PWM_GEN_MODE_DOWN|PWM_GEN_MODE_NO_SYNC);
//PWM发生器周期配置
//IN this case you get: (1/250Hz)*16MHz=64000 cycles.
//T = 4(ms)
PWMGenPeriodSet(PWM_BASE,PWM_GEN_0,64000);
//设置输出PWM的高电平宽度,宽度值是PWM计数器的计时时钟数
PWMPulseWidthSet(PWM_BASE,PWM_OUT_0,16000);
//使能PWM输出管脚
PWMOutputState(PWM_BASE,PWM_OUT_0_BIT,true);
//开启PWM发生器的定时计数器
PWMGenEnable(PWM_BASE,PWM_GEN_0);
}
以上是我PWM初始化的代码,用示波器检测输出信号,发现输出一直为高电平,调试了很久了,一直没找到原因,遇到类似情况的或者了解的可以交流下 |