你好,LM3S1968有什么特殊的地方吗?同样使用PD1/PWM1口实现PWM输出的一段代码,在LM3S1968上不能实现,却在LM3S6432在完全正常。编译工具为KEIL uVision V4.00u +Luminary Eval Board 此问题已经困绕我三天了。]
#include "hw_memmap.h"
#include "hw_types.h"
#include "sysctl.h"
#include "gpio.h"
#include "pwm.h"
int main(void)
{
SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN | SYSCTL_XTAL_8MHZ);// 配置6MHz外部晶振作为主时钟
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD); // 使能PWM2和PWM3输出所在GPIO
GPIODirModeSet(GPIO_PORTD_BASE,GPIO_PIN_1,GPIO_DIR_MODE_OUT);
GPIOPadConfigSet(GPIO_PORTD_BASE,GPIO_PIN_1,GPIO_STRENGTH_4MA,GPIO_PIN_TYPE_STD);//PB0/PWM2和PB1/PWM3配置为4mA推挽模式
GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_1,GPIO_PIN_1);
//GPIOPinWrite(GPIO_PORTH_BASE,GPIO_PIN_1,GPIO_PIN_1);
SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM); // 使能PWM模块
SysCtlPWMClockSet(SYSCTL_PWMDIV_1); // PWM时钟配置:不分频
GPIOPinTypePWM(GPIO_PORTD_BASE,GPIO_PIN_1);// PB0和PB1配置为PWM功能
PWMGenConfigure(PWM_BASE, PWM_GEN_0,PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_NO_SYNC);// 配置PWM发生器1:加减计数
PWMGenPeriodSet(PWM_BASE, PWM_GEN_0, 8000); // 设置PWM发生器1的周期
PWMPulseWidthSet(PWM_BASE, PWM_OUT_1, 5600); // 设置PWM2输出的脉冲宽度
// PWMPulseWidthSet(PWM_BASE, PWM_OUT_3, 2800); // 设置PWM3输出的脉冲宽度
PWMOutputState(PWM_BASE,PWM_OUT_1_BIT,true);// 使能PWM2和PWM3的输出
PWMGenEnable(PWM_BASE, PWM_GEN_0); // 使能PWM发生器1,开始产生PWM方波
for (;;)
{
}
}