LM3S1138入门7,PLL(锁相环)设置系统时钟
扫描二维码
随时随地手机看文章
程序运行后,先设置LDO电压为2.75V,要点是:必须首先设置LDO电压为2.75V,切记!然后配置PLL输出为50MHz,作为系统时钟。
采用PLL后,CPU运行速度大大加快,但功耗也会明显增大。因此在低功耗应用场合要限制PLL的使用。
主函数:
#include "LED.H"
#include
#include
#include
#include
#include
#include
// 将较长的标识符定义成较短的形式
#define SysCtlPeriEnable SysCtlPeripheralEnable
#define SysCtlPeriDisable SysCtlPeripheralDisable
#define GPIOPinTypeIn GPIOPinTypeGPIOInput
#define GPIOPinTypeOut GPIOPinTypeGPIOOutput
// 定义KEY
#define KEY_PERIPH SYSCTL_PERIPH_GPIOG
#define KEY_PORT GPIO_PORTG_BASE
#define KEY_PIN GPIO_PIN_5
// 防止JTAG失效
void JTAG_Wait(void)
{
SysCtlPeriEnable(KEY_PERIPH); // 使能KEY所在的GPIO端口
GPIOPinTypeIn(KEY_PORT , KEY_PIN); // 设置KEY所在管脚为输入
if ( GPIOPinRead(KEY_PORT , KEY_PIN) == 0x00 ) // 如果复位时按下KEY,则进入
{
for (;;); // 死循环,以等待JTAG连接
}
SysCtlPeriDisable(KEY_PERIPH); // 禁止KEY所在的GPIO端口
}
// 定义全局的系统时钟变量
unsigned long TheSysClock = 12000000UL;
// 延时
void Delay(unsigned long ulVal)
{
while ( --ulVal != 0 );
}
// 系统初始化
void SystemInit(void)
{
SysCtlLDOSet(SYSCTL_LDO_2_75V); // 配置PLL前需将LDO电压设置为2.75V
SysCtlClockSet(SYSCTL_USE_PLL | // 系统时钟设置,采用PLL
SYSCTL_OSC_MAIN | // 主振荡器
SYSCTL_XTAL_6MHZ | // 外接6MHz晶振
SYSCTL_SYSDIV_4); // 分频结果为50MHz
TheSysClock = SysCtlClockGet(); // 获取系统时钟,单位:Hz
LED_Init(LED2 | LED3); // LED初始化
}
int main(void)
{
JTAG_Wait(); // 防止JTAG失效,重要!
SystemInit(); // 系统初始化
LED_On(LED2); // 点亮LED2
LED_Off(LED3); // 熄灭LED3
for (;;)
{
LED_Toggle(LED2 | LED3);
Delay(150 * (TheSysClock / 4000)); // 延时约150ms
}
}