コード例 #1
0
ファイル: sleep.c プロジェクト: 1deus/tmk_keyboard
void deepsleep(void) {

#if (DEVICE_SEMIHOST == 1)
    // ensure debug is disconnected
    mbed_interface_disconnect();
#endif

  // PCON[PM] (bits 2:0) set to 1
  LPC_PMU->PCON &= ~0x03;
  LPC_PMU->PCON |= 0x01;

  //According to user manual it is kinda picky about reserved bits, so we follow that nicely
  //Keep WDOSC and BOD in same state as they are now during deepsleep
  LPC_SYSCON->PDSLEEPCFG = 0x00000037 | (LPC_SYSCON->PDRUNCFG & (0x00000048));

  // Power up same as before powerdown
  LPC_SYSCON->PDAWAKECFG = LPC_SYSCON->PDRUNCFG;

  // All interrupts can wake
  LPC_SYSCON->STARTERP0 = 0xFF;
  LPC_SYSCON->STARTERP1 = 0xFFFFFFFF;

  // SRC[SLEEPDEEP] set to 1 = deep sleep
  SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;

  // wait for interrupt
  __WFI();
}
コード例 #2
0
ファイル: main.cpp プロジェクト: nullsub/mbed_marlin
int main() {
	mbed_interface_disconnect(); //disable debug interface. and acces to MAC and local FS. ADC will work better!
	timer.start();
	serial_buffered.baud(BAUDRATE);
	setup();
	while (1) {
		loop();
	}
}
コード例 #3
0
ファイル: sleep.c プロジェクト: 1deus/tmk_keyboard
void deepsleep(void) {

#if (DEVICE_SEMIHOST == 1)
    // ensure debug is disconnected
    mbed_interface_disconnect();
#endif
    
    // PCON[PD] set to deepsleep
    sleep();
}
コード例 #4
0
ファイル: sleep.c プロジェクト: 1deus/tmk_keyboard
void sleep(void) {

#if (DEVICE_SEMIHOST == 1)
    // ensure debug is disconnected
    mbed_interface_disconnect();
#endif

    // PCON[PM] (bits 2:0) set to 0
    LPC_PMU->PCON &= ~0x03;

    // SRC[SLEEPDEEP] set to 0 = sleep
    SCB->SCR &= ~SCB_SCR_SLEEPDEEP_Msk;

    // wait for interrupt
    __WFI();
}