mirror of
https://github.com/drasko/open-ameba.git
synced 2024-11-23 06:24:17 +00:00
99 lines
4.3 KiB
C
99 lines
4.3 KiB
C
|
/* mbed Microcontroller Library
|
||
|
* Copyright (c) 2006-2013 ARM Limited
|
||
|
*
|
||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
* you may not use this file except in compliance with the License.
|
||
|
* You may obtain a copy of the License at
|
||
|
*
|
||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||
|
*
|
||
|
* Unless required by applicable law or agreed to in writing, software
|
||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
* See the License for the specific language governing permissions and
|
||
|
* limitations under the License.
|
||
|
*/
|
||
|
#ifndef MBED_SLEEP_EX_API_H
|
||
|
#define MBED_SLEEP_EX_API_H
|
||
|
|
||
|
#include "device.h"
|
||
|
|
||
|
#if DEVICE_SLEEP
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
/* Sleep Eake Up event, the User application also
|
||
|
need to config the peripheral to trigger wake up event */
|
||
|
#define SLEEP_WAKEUP_BY_STIMER (SLP_STIMER) // wake up by system timer
|
||
|
#define SLEEP_WAKEUP_BY_GTIMER (SLP_GTIMER) // wake up by General purpose timer timeout
|
||
|
#define SLEEP_WAKEUP_BY_GPIO_INT (SLP_GPIO) // wake up by GPIO Port A[7:0] Interrupt
|
||
|
#define SLEEP_WAKEUP_BY_WLAN (SLP_WL) // wake up by WLan event
|
||
|
#define SLEEP_WAKEUP_BY_NFC (SLP_NFC) // wake up by NFC event
|
||
|
#define SLEEP_WAKEUP_BY_SDIO (SLP_SDIO) // wake up by SDIO event
|
||
|
#define SLEEP_WAKEUP_BY_USB (SLP_USB) // wake up by USB event
|
||
|
|
||
|
// Deep Standby Wakeup event
|
||
|
#define STANDBY_WAKEUP_BY_STIMER (BIT0) // wake up by system timer
|
||
|
#define STANDBY_WAKEUP_BY_NFC (BIT1) // wake up by NFC event
|
||
|
//#define SLEEP_WAKEUP_BY_DS_TIMER (BIT2) // The timer to wakeup from Deep Sleep timer
|
||
|
// Do not modify these definition, or need to modify the code also.
|
||
|
#define STANDBY_WAKEUP_BY_PA5 (BIT4) // GPIO Port A[5]
|
||
|
#define STANDBY_WAKEUP_BY_PC7 (BIT5) // GPIO Port C[7]
|
||
|
#define STANDBY_WAKEUP_BY_PD5 (BIT6) // GPIO Port D[5]
|
||
|
#define STANDBY_WAKEUP_BY_PE3 (BIT7) // GPIO Port E[3]
|
||
|
|
||
|
// Deep Sleep Wakeup event
|
||
|
#define DSLEEP_WAKEUP_BY_TIMER (DS_TIMER33)
|
||
|
#define DSLEEP_WAKEUP_BY_GPIO (DS_GPIO) // GPIO Port B[1]
|
||
|
|
||
|
typedef struct _SLEEP_WKUP_EVENT_ {
|
||
|
u8 wakeup_event; // Wake up event: Timer, NFC, GPIO
|
||
|
u8 gpio_option; // GPIO Wakeup setting: [3:0]: Pin 3~0 enable, [7:4]: pin3~0 active high/low
|
||
|
u32 timer_duration; // the sleep duration and then wakeup
|
||
|
} SLEEP_WAKEUP_EVENT, *PSLEEP_WAKEUP_EVENT;
|
||
|
/** Send the microcontroller to sleep
|
||
|
*
|
||
|
* The processor is setup ready for sleep, and sent to sleep using __WFI(). In this mode, the
|
||
|
* system clock to the core is stopped until a reset or an interrupt occurs. This eliminates
|
||
|
* dynamic power used by the processor, memory systems and buses. The processor, peripheral and
|
||
|
* memory state are maintained, and the peripherals continue to work and can generate interrupts.
|
||
|
*
|
||
|
* The processor can be woken up by any internal peripheral interrupt or external pin interrupt.
|
||
|
*
|
||
|
* @note
|
||
|
* The mbed interface semihosting is disconnected as part of going to sleep, and can not be restored.
|
||
|
* Flash re-programming and the USB serial port will remain active, but the mbed program will no longer be
|
||
|
* able to access the LocalFileSystem
|
||
|
*/
|
||
|
void sleep_ex(uint32_t wakeup_event, uint32_t sleep_duration);
|
||
|
void sleep_ex_selective(uint32_t wakeup_event, uint32_t sleep_duration, uint32_t clk_sourec_enable, uint32_t sdr_enable);
|
||
|
|
||
|
void standby_wakeup_event_add(uint32_t wakeup_event, uint32_t sleep_duration_ms, uint32_t gpio_active);
|
||
|
void standby_wakeup_event_del(uint32_t wakeup_event);
|
||
|
void deepstandby_ex(void);
|
||
|
|
||
|
/** Send the microcontroller to deep sleep
|
||
|
*
|
||
|
* This processor is setup ready for deep sleep, and sent to sleep using __WFI(). This mode
|
||
|
* has the same sleep features as sleep plus it powers down peripherals and clocks. All state
|
||
|
* is still maintained.
|
||
|
*
|
||
|
* The processor can only be woken up by an external interrupt on a pin or a timer.
|
||
|
*
|
||
|
* @note
|
||
|
* The mbed interface semihosting is disconnected as part of going to sleep, and can not be restored.
|
||
|
* Flash re-programming and the USB serial port will remain active, but the mbed program will no longer be
|
||
|
* able to access the LocalFileSystem
|
||
|
*/
|
||
|
void deepsleep_ex(uint32_t wakeup_event, uint32_t sleep_duration);
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif
|
||
|
|
||
|
#endif
|