Content originally posted in LPCWare by straw_hat on Tue Aug 23 23:27:44 MST 2011
Quote:
void Wake_Up_Init(void)
{
/*Turn on the IRC & Flash*/
LPC_SYSCON->PDRUNCFG |= (0<<0)|(0<<1)|(0<<2);
/*Swicth MAINCLKSEL to IRC */
LPC_SYSCON->MAINCLKSEL = 0;
LPC_SYSCON->MAINCLKUEN = 0;
LPC_SYSCON->MAINCLKUEN = 1;
while (!(LPC_SYSCON->MAINCLKUEN & 0x01));
/*Ensure DPDEN is disabled*/
LPC_PMU->PCON = (0<<1);
/*BOD Off, Watchdog Off*/
LPC_SYSCON->PDSLEEPCFG = 0x00000FFF;
/*Periherals to be powered up in returning from deep sleep mode*/
LPC_SYSCON->PDAWAKECFG = LPC_SYSCON->PDRUNCFG;
/*Wake-up using PIO0_1*/
LPC_SYSCON->STARTAPRP0 |= (1<<1);
LPC_SYSCON->STARTRSRP0CLR |= (1<<1);
LPC_SYSCON->STARTERP0 |= (1<<1);
NVIC_ClearPendingIRQ(WAKEUP12_IRQn);
NVIC_EnableIRQ(WAKEUP12_IRQn);
/*Specify Deep Sleep Mode*/
SCB->SCR |= (1<<2); //Set SLEEPDEEPBIT
/*Wait for Interrupt, Enter Deep Sleep Mode*/
__WFI();
}
void Timer(void)
{
int i;
for(i=0; i<=500; i++)
{
LPC_GPIO1->DATA ^= (1<<10);
}
for(i=500; i>=0; i--)
{
LPC_GPIO1->DATA ^= (0<<10);
}
LPC_IOCON->PIO1_9 &= ~(0x07);
LPC_IOCON->PIO1_9 |= (0x00);
GPIOSetDir(PORT1, 9, 1);
GPIOSetValue(PORT1, 9, 0);
LPC_IOCON->R_PIO1_2 &= ~(0x07);
LPC_IOCON->R_PIO1_2 |= (0x01);
GPIOSetDir(PORT1, 2, 1);
GPIOSetValue(PORT1, 2, 0);
}
thats my code for sleep mode, I only copied it from the sample codes provided by nxp:D..