为什么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发生器
}
管脚也配置了,这些都不是原因。把群星库内的PWM例程烧写进去也不成。其他通信模块,和翻转任意IO口,LM3S5956都可以,就是不输出PWM。可是我的四轴正需要PWM....着急。我都重新焊过一片新的芯片板子,还是一样的症状。请专家帮忙啊
请问你PWM输出是用的那几个IO ? 也许需要添加如下配置程序!
GPIOPinConfigure(GPIO_PD0_M0PWM6);
GPIOPinConfigure(GPIO_PD1_M0PWM7);