Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of mbed-dev by
hal/sleep_api.h@186:707f6e361f3e, 2018-06-22 (annotated)
- Committer:
- Anna Bridge
- Date:
- Fri Jun 22 16:45:37 2018 +0100
- Revision:
- 186:707f6e361f3e
- Parent:
- 160:d5399cc887bb
- Child:
- 187:92cbb9eec47b
mbed-dev library. Release version 162
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| <> | 149:156823d33999 | 1 | |
| <> | 149:156823d33999 | 2 | /** \addtogroup hal */ |
| <> | 149:156823d33999 | 3 | /** @{*/ |
| <> | 144:ef7eb2e8f9f7 | 4 | /* mbed Microcontroller Library |
| <> | 144:ef7eb2e8f9f7 | 5 | * Copyright (c) 2006-2013 ARM Limited |
| <> | 144:ef7eb2e8f9f7 | 6 | * |
| <> | 144:ef7eb2e8f9f7 | 7 | * Licensed under the Apache License, Version 2.0 (the "License"); |
| <> | 144:ef7eb2e8f9f7 | 8 | * you may not use this file except in compliance with the License. |
| <> | 144:ef7eb2e8f9f7 | 9 | * You may obtain a copy of the License at |
| <> | 144:ef7eb2e8f9f7 | 10 | * |
| <> | 144:ef7eb2e8f9f7 | 11 | * http://www.apache.org/licenses/LICENSE-2.0 |
| <> | 144:ef7eb2e8f9f7 | 12 | * |
| <> | 144:ef7eb2e8f9f7 | 13 | * Unless required by applicable law or agreed to in writing, software |
| <> | 144:ef7eb2e8f9f7 | 14 | * distributed under the License is distributed on an "AS IS" BASIS, |
| <> | 144:ef7eb2e8f9f7 | 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| <> | 144:ef7eb2e8f9f7 | 16 | * See the License for the specific language governing permissions and |
| <> | 144:ef7eb2e8f9f7 | 17 | * limitations under the License. |
| <> | 144:ef7eb2e8f9f7 | 18 | */ |
| <> | 144:ef7eb2e8f9f7 | 19 | #ifndef MBED_SLEEP_API_H |
| <> | 144:ef7eb2e8f9f7 | 20 | #define MBED_SLEEP_API_H |
| <> | 144:ef7eb2e8f9f7 | 21 | |
| <> | 144:ef7eb2e8f9f7 | 22 | #include "device.h" |
| <> | 144:ef7eb2e8f9f7 | 23 | |
| <> | 144:ef7eb2e8f9f7 | 24 | #if DEVICE_SLEEP |
| <> | 144:ef7eb2e8f9f7 | 25 | |
| <> | 144:ef7eb2e8f9f7 | 26 | #ifdef __cplusplus |
| <> | 144:ef7eb2e8f9f7 | 27 | extern "C" { |
| <> | 144:ef7eb2e8f9f7 | 28 | #endif |
| <> | 144:ef7eb2e8f9f7 | 29 | |
| Anna Bridge |
186:707f6e361f3e | 30 | /** |
| Anna Bridge |
186:707f6e361f3e | 31 | * \defgroup hal_sleep sleep hal requirements |
| Anna Bridge |
186:707f6e361f3e | 32 | * Low level interface to the sleep mode of a target. |
| Anna Bridge |
186:707f6e361f3e | 33 | * |
| Anna Bridge |
186:707f6e361f3e | 34 | * # Defined behaviour |
| Anna Bridge |
186:707f6e361f3e | 35 | * |
| Anna Bridge |
186:707f6e361f3e | 36 | * * Sleep mode |
| Anna Bridge |
186:707f6e361f3e | 37 | * * wake-up time should be less than 10 us - Verified by sleep_usticker_test(). |
| Anna Bridge |
186:707f6e361f3e | 38 | * * the processor can be woken up by any internal peripheral interrupt - Verified by sleep_usticker_test(). |
| Anna Bridge |
186:707f6e361f3e | 39 | * * all peripherals operate as in run mode - not verified. |
| Anna Bridge |
186:707f6e361f3e | 40 | * * the processor can be woken up by external pin interrupt - not verified. |
| Anna Bridge |
186:707f6e361f3e | 41 | * * Deep sleep |
| Anna Bridge |
186:707f6e361f3e | 42 | * * the wake-up time should be less than 10 ms - Verified by deepsleep_lpticker_test(). |
| Anna Bridge |
186:707f6e361f3e | 43 | * * lp ticker should wake up a target from this mode - Verified by deepsleep_lpticker_test(). |
| Anna Bridge |
186:707f6e361f3e | 44 | * * RTC should wake up a target from this mode - not verified. |
| Anna Bridge |
186:707f6e361f3e | 45 | * * an external interrupt on a pin should wake up a target from this mode - not verified. |
| Anna Bridge |
186:707f6e361f3e | 46 | * * a watchdog timer should wake up a target from this mode - not verified. |
| Anna Bridge |
186:707f6e361f3e | 47 | * * High-speed clocks are turned off - Verified by deepsleep_high_speed_clocks_turned_off_test(). |
| Anna Bridge |
186:707f6e361f3e | 48 | * * RTC keeps time - Verified by rtc_sleep_test(). |
| Anna Bridge |
186:707f6e361f3e | 49 | * |
| Anna Bridge |
186:707f6e361f3e | 50 | * # Undefined behaviour |
| Anna Bridge |
186:707f6e361f3e | 51 | * |
| Anna Bridge |
186:707f6e361f3e | 52 | * * peripherals aside from RTC, GPIO and lp ticker result in undefined behaviour in deep sleep. |
| Anna Bridge |
186:707f6e361f3e | 53 | * @{ |
| Anna Bridge |
186:707f6e361f3e | 54 | */ |
| Anna Bridge |
186:707f6e361f3e | 55 | |
| Anna Bridge |
186:707f6e361f3e | 56 | /** |
| Anna Bridge |
186:707f6e361f3e | 57 | * \defgroup hal_sleep_tests sleep hal tests |
| Anna Bridge |
186:707f6e361f3e | 58 | * The sleep HAL tests ensure driver conformance to defined behaviour. |
| Anna Bridge |
186:707f6e361f3e | 59 | * |
| Anna Bridge |
186:707f6e361f3e | 60 | * To run the sleep hal tests use the command: |
| Anna Bridge |
186:707f6e361f3e | 61 | * |
| Anna Bridge |
186:707f6e361f3e | 62 | * mbed test -t <toolchain> -m <target> -n tests-mbed_hal-sleep* |
| Anna Bridge |
186:707f6e361f3e | 63 | * |
| Anna Bridge |
186:707f6e361f3e | 64 | */ |
| Anna Bridge |
186:707f6e361f3e | 65 | |
| <> | 144:ef7eb2e8f9f7 | 66 | /** Send the microcontroller to sleep |
| <> | 144:ef7eb2e8f9f7 | 67 | * |
| Anna Bridge |
186:707f6e361f3e | 68 | * The processor is setup ready for sleep, and sent to sleep. In this mode, the |
| <> | 144:ef7eb2e8f9f7 | 69 | * system clock to the core is stopped until a reset or an interrupt occurs. This eliminates |
| <> | 144:ef7eb2e8f9f7 | 70 | * dynamic power used by the processor, memory systems and buses. The processor, peripheral and |
| <> | 144:ef7eb2e8f9f7 | 71 | * memory state are maintained, and the peripherals continue to work and can generate interrupts. |
| <> | 144:ef7eb2e8f9f7 | 72 | * |
| <> | 144:ef7eb2e8f9f7 | 73 | * The processor can be woken up by any internal peripheral interrupt or external pin interrupt. |
| <> | 144:ef7eb2e8f9f7 | 74 | * |
| Anna Bridge |
186:707f6e361f3e | 75 | * The wake-up time shall be less than 10 us. |
| Anna Bridge |
186:707f6e361f3e | 76 | * |
| <> | 144:ef7eb2e8f9f7 | 77 | */ |
| <> | 160:d5399cc887bb | 78 | void hal_sleep(void); |
| <> | 144:ef7eb2e8f9f7 | 79 | |
| <> | 144:ef7eb2e8f9f7 | 80 | /** Send the microcontroller to deep sleep |
| <> | 144:ef7eb2e8f9f7 | 81 | * |
| <> | 144:ef7eb2e8f9f7 | 82 | * This processor is setup ready for deep sleep, and sent to sleep using __WFI(). This mode |
| Anna Bridge |
186:707f6e361f3e | 83 | * has the same sleep features as sleep plus it powers down peripherals and high frequency clocks. |
| Anna Bridge |
186:707f6e361f3e | 84 | * All state is still maintained. |
| <> | 144:ef7eb2e8f9f7 | 85 | * |
| Anna Bridge |
186:707f6e361f3e | 86 | * The processor can only be woken up by low power ticker, RTC, an external interrupt on a pin or a watchdog timer. |
| Anna Bridge |
186:707f6e361f3e | 87 | * |
| Anna Bridge |
186:707f6e361f3e | 88 | * The wake-up time shall be less than 10 ms. |
| <> | 144:ef7eb2e8f9f7 | 89 | */ |
| <> | 160:d5399cc887bb | 90 | void hal_deepsleep(void); |
| <> | 144:ef7eb2e8f9f7 | 91 | |
| Anna Bridge |
186:707f6e361f3e | 92 | /**@}*/ |
| Anna Bridge |
186:707f6e361f3e | 93 | |
| <> | 144:ef7eb2e8f9f7 | 94 | #ifdef __cplusplus |
| <> | 144:ef7eb2e8f9f7 | 95 | } |
| <> | 144:ef7eb2e8f9f7 | 96 | #endif |
| <> | 144:ef7eb2e8f9f7 | 97 | |
| <> | 144:ef7eb2e8f9f7 | 98 | #endif |
| <> | 144:ef7eb2e8f9f7 | 99 | |
| <> | 144:ef7eb2e8f9f7 | 100 | #endif |
| <> | 149:156823d33999 | 101 | |
| Anna Bridge |
186:707f6e361f3e | 102 | /**@}*/ |
