LM3s5956 PWM发生器配置后均不输出PWM

Other Parts Discussed in Thread: LM3S811

为什么LM3s5956 PWM发生器配置后均不输出PWM呢?相同的头文件配置,下到LM3S811上就可以成功输出。难道LM3s5956不支持PWM输出?不可能吧?恳请专家,指点。

我初始化函数,配置如下:

//宏定义L298N使能端口所在的PWM管脚

#define  EN_PERIPH             SYSCTL_PERIPH_GPIOD

#define  ENORT_BASE            GPIO_PORTD_BASE

#define  EN_PWM_GEN            PWM_GEN_0          //对应PWM发生器,取值随管脚在0、1、2之间变化

#define  EN_A_PIN              GPIO_PIN_0         //定义A桥使能所在I/O管脚

#define  EN_B_PIN              GPIO_PIN_1         //定义B桥使能所在I/O管脚

#define  EN_A_PWM_OUT          PWM_OUT_0          //占空比设置时A桥算在PWM输出种类

#define  EN_B_PWM_OUT          PWM_OUT_1          //占空比设置时B桥算在PWM输出种类

#define  EN_A_PWM_OUT_BIT      PWM_OUT_0_BIT      //定义A桥使能所在PWM发生器输出管脚

#define  EN_B_PWM_OUT_BIT      PWM_OUT_1_BIT      //定义B桥使能所在PWM发生器输出管脚

/**************(在更换管脚时,只需要更改上述宏定义对应管脚)******************/

unsigned long ulPeriod;

/***********************L298N 是能管脚所在PWM函数初始化(只需调用一次)

使用说明:通过控制EN_A和EN_B所在PWM占空比,即:

   PWMPulseWidthSet(PWM_BASE, EN_A_PWM_OUT , ulPeriod / 4);  

   PWMPulseWidthSet(PWM_BASE, EN_B_PWM_OUT , ulPeriod * 3 / 4);

即可调整转速

*************************************************************************/

void EN_PWM_Init(void)

{

   SysCtlPWMClockSet(SYSCTL_PWMDIV_1);          //时钟配置,不分频

   SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM);   //使能PWM模块

   SysCtlPeripheralEnable(EN_PERIPH);           //使能PWM输出所在的GPIO

   GPIOPinTypePWM(ENORT_BASE, EN_A_PIN | EN_B_PIN);

                                                //PWM0 and PWM1配置为PWM功能

   //用于计数模式,同步模式,调试下的行为,以及故障模式的设置

   PWMGenConfigure(PWM0_BASE, EN_PWM_GEN,

                   PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC);

   ulPeriod = SysCtlClockGet() /5000;          //计算PWM时钟周期

   //用于设置PWM周期 Set the PWM period to 50 kHz.

   PWMGenPeriodSet(PWM0_BASE, EN_PWM_GEN, ulPeriod);

   //用于设置PWM占空比

   PWMPulseWidthSet(PWM0_BASE, EN_A_PWM_OUT , ulPeriod / 4);  

   PWMPulseWidthSet(PWM0_BASE, EN_B_PWM_OUT , ulPeriod / 4);

   PWMOutputState(PWM0_BASE, EN_A_PWM_OUT_BIT | EN_B_PWM_OUT_BIT, true);//打开相应的输出管脚

   PWMGenEnable(PWM0_BASE, EN_PWM_GEN);           //使能PWM发生器

}

  • Jingbing Wang :

      一个比较简单快捷的方法是找出两个芯片的PWM之间的差异,尤其是注意使用相关管脚的初始化操作上的一些差异

  • 管脚也配置了,这些都不是原因。把群星库内的PWM例程烧写进去也不成。其他通信模块,和翻转任意IO口,LM3S5956都可以,就是不输出PWM。可是我的四轴正需要PWM....着急。我都重新焊过一片新的芯片板子,还是一样的症状。请专家帮忙啊

  •    请问你PWM输出是用的那几个IO ? 也许需要添加如下配置程序!

       GPIOPinConfigure(GPIO_PD0_M0PWM6);  

       GPIOPinConfigure(GPIO_PD1_M0PWM7);