LM3S1138入門7,PLL(鎖相環(huán))設(shè)置系統(tǒng)時鐘
程序運行后,先設(shè)置LDO電壓為2.75V,要點是:必須首先設(shè)置LDO電壓為2.75V,切記!然后配置PLL輸出為50MHz,作為系統(tǒng)時鐘。
采用PLL后,CPU運行速度大大加快,但功耗也會明顯增大。因此在低功耗應(yīng)用場合要限制PLL的使用。
主函數(shù):
#include "LED.H"
#include
#include
#include
#include
#include
#include
// 將較長的標(biāo)識符定義成較短的形式
#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); // 設(shè)置KEY所在管腳為輸入
if ( GPIOPinRead(KEY_PORT , KEY_PIN) == 0x00 ) // 如果復(fù)位時按下KEY,則進入
{
for (;;); // 死循環(huán),以等待JTAG連接
}
SysCtlPeriDisable(KEY_PERIPH); // 禁止KEY所在的GPIO端口
}
// 定義全局的系統(tǒng)時鐘變量
unsigned long TheSysClock = 12000000UL;
// 延時
void Delay(unsigned long ulVal)
{
while ( --ulVal != 0 );
}
// 系統(tǒng)初始化
void SystemInit(void)
{
SysCtlLDOSet(SYSCTL_LDO_2_75V); // 配置PLL前需將LDO電壓設(shè)置為2.75V
SysCtlClockSet(SYSCTL_USE_PLL | // 系統(tǒng)時鐘設(shè)置,采用PLL
SYSCTL_OSC_MAIN | // 主振蕩器
SYSCTL_XTAL_6MHZ | // 外接6MHz晶振
SYSCTL_SYSDIV_4); // 分頻結(jié)果為50MHz
TheSysClock = SysCtlClockGet(); // 獲取系統(tǒng)時鐘,單位:Hz
LED_Init(LED2 | LED3); // LED初始化
}
int main(void)
{
JTAG_Wait(); // 防止JTAG失效,重要!
SystemInit(); // 系統(tǒng)初始化
LED_On(LED2); // 點亮LED2
LED_Off(LED3); // 熄滅LED3
for (;;)
{
LED_Toggle(LED2 | LED3);
Delay(150 * (TheSysClock / 4000)); // 延時約150ms
}
}