void setupClock()
{
LPC_SYSCON->PDRUNCFG_b.SYSPLL_PD = 0; // 0=powered, 1=off
LPC_SYSCON->SYSPLLCLKSEL = 1; // 0=irc, 1=systemosc, 3=32khzclk
LPC_SYSCON->SYSPLLCLKUEN = 1;
LPC_SYSCON->SYSPLLCLKUEN = 0;
LPC_SYSCON->SYSPLLCLKUEN = 1;
while(!(LPC_SYSCON->SYSPLLCLKUEN & 0x01)); // this works
// must admit not sure this is right
LPC_SYSCON->SYSPLLCTRL_b.MSEL = 3;
LPC_SYSCON->SYSPLLCTRL_b.PSEL = 1;
while(!(LPC_SYSCON->SYSPLLSTAT & 0x01)); // **this is where it never exits**
}
|
void setupSystemOscillator()
{
LPC_SYSCON->SYSAHBCLKCTRL_b.IOCON = 1;
LPC_IOCON->PIO2_0 = 1;
LPC_IOCON->PIO2_1 = 1;
LPC_SYSCON->PDRUNCFG_b.SYSOSC_PD = 0;
int i;
for(i = 0x1000; i > 0; i--) {
asm("movs r0, r0"); // noop delay
}
}
void setupClock()
{
setupSystemOscillator();
LPC_SYSCON->SYSPLLCLKSEL = 1;
LPC_SYSCON->SYSPLLCLKUEN = 0;
LPC_SYSCON->SYSPLLCLKUEN = 1;
LPC_SYSCON->PDRUNCFG_b.SYSPLL_PD = 1;
LPC_SYSCON->SYSPLLCTRL_b.MSEL = 0;
LPC_SYSCON->SYSPLLCTRL_b.PSEL = 3;
LPC_SYSCON->PDRUNCFG_b.SYSPLL_PD = 0;
while((LPC_SYSCON->SYSPLLSTAT & 0x01) != 1);
}
|