| 
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);
}
 | 
