本人使用的器件是LM3S811。因需要25M左右的方波输出,采用的是PWM模块是需要使用PLL对外部6MHz晶振进行倍频,系统时钟200MHz。使用的时钟设置代码如下:
SysCtlLDOSet(SYSCTL_LDO_2_75V);//设置LDO电压为2.75V
SysCtlDelay(3000);//LDO电压稳定
SysCtlClockSet(
SYSCTL_SYSDIV_1
|SYSCTL_USE_PLL
|SYSCTL_OSC_MAIN
|SYSCTL_XTAL_6MHZ
);//设置时钟
SysCtlDelay(3000);
//----分割线------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
然后我用配置了PWM输出
SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM);
GPIOPinTypePWM(GPIO_PORTD_BASE,GPIO_PIN_0);
PWMGenConfigure(PWM_BASE, PWM_GEN_0,
PWM_GEN_MODE_UP_DOWN |
PWM_GEN_MODE_NO_SYNC);
//!!!
PWMGenPeriodSet(PWM_BASE, PWM_GEN_0, 8);
//!!!
PWMPulseWidthSet(PWM_BASE, PWM_OUT_0,
PWMGenPeriodGet(PWM_BASE,PWM_OUT_0)/2+1);
PWMOutputState(PWM_BASE, PWM_OUT_0_BIT, true);
PWMGenEnable(PWM_BASE, PWM_GEN_0);
如果时钟正确配置,那么输出的频率应该是200M/8=25MHz
但是,最后得出的PWM频率大约1.5MHz,说明实际使用的时钟却是12MHz,时钟配置不正确。何故?(我已经实现设置了LDO电压)