István Cserny / WakeUp_STM32

Dependents:   Lab04_Check_StandBy_os2 Lab04_wakeup_STM32

Committer:
cspista
Date:
Fri Nov 12 12:42:09 2021 +0000
Revision:
3:aa8fb11c30d2
Parent:
2:502051beeb95
Few typos were corrected

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 0:abaa4fd0c727 1 /*
kenjiArai 0:abaa4fd0c727 2
kenjiArai 0:abaa4fd0c727 3 Original idea & program
kenjiArai 0:abaa4fd0c727 4 https://os.mbed.com/users/Sissors/code/WakeUp/
kenjiArai 0:abaa4fd0c727 5 by Erik
kenjiArai 0:abaa4fd0c727 6 */
kenjiArai 0:abaa4fd0c727 7
kenjiArai 0:abaa4fd0c727 8 /*
kenjiArai 0:abaa4fd0c727 9 * Modified only for STM CPU
kenjiArai 0:abaa4fd0c727 10 * by Kenji Arai / JH1PJL
kenjiArai 0:abaa4fd0c727 11 *
kenjiArai 0:abaa4fd0c727 12 * http://www7b.biglobe.ne.jp/~kenjia/
kenjiArai 0:abaa4fd0c727 13 * http://mbed.org/users/kenjiArai/
kenjiArai 0:abaa4fd0c727 14 * Created: September 21st, 2017
kenjiArai 0:abaa4fd0c727 15 * Revised: March 12th, 2020
kenjiArai 0:abaa4fd0c727 16 */
cspista 3:aa8fb11c30d2 17 /*
cspista 3:aa8fb11c30d2 18 * Modified for correcting few typos
cspista 3:aa8fb11c30d2 19 * by Istvan Cserny on Nov 11, 2021.
cspista 3:aa8fb11c30d2 20 * last revised: Nov 12, 2021.
cspista 3:aa8fb11c30d2 21 */
cspista 3:aa8fb11c30d2 22
kenjiArai 0:abaa4fd0c727 23 #include "mbed.h"
kenjiArai 0:abaa4fd0c727 24
kenjiArai 0:abaa4fd0c727 25 /**
kenjiArai 0:abaa4fd0c727 26 * Class to make wake up a STM CPU from deepsleep using a low-power timer.
kenjiArai 0:abaa4fd0c727 27 *
kenjiArai 0:abaa4fd0c727 28 * @code
kenjiArai 0:abaa4fd0c727 29 *
kenjiArai 0:abaa4fd0c727 30 * #include "mbed.h"
cspista 2:502051beeb95 31 * #include "WakeUp_STM32.h"
kenjiArai 0:abaa4fd0c727 32 *
kenjiArai 0:abaa4fd0c727 33 * DigitalOut myled(LED1);
kenjiArai 0:abaa4fd0c727 34 *
kenjiArai 0:abaa4fd0c727 35 * int main() {
kenjiArai 0:abaa4fd0c727 36 * uint32_t loop_count = 1;
cspista 3:aa8fb11c30d2 37 * wait(1);
kenjiArai 0:abaa4fd0c727 38 * while(true) {
cspista 3:aa8fb11c30d2 39 * myled = !myled;
cspista 3:aa8fb11c30d2 40 * if (++loop_count > 4) {
kenjiArai 0:abaa4fd0c727 41 * WakeUp::standby_then_reset(30000); // 30sec
kenjiArai 0:abaa4fd0c727 42 * while(true) {;} // never executing this line
kenjiArai 0:abaa4fd0c727 43 * }
kenjiArai 0:abaa4fd0c727 44 * }
kenjiArai 0:abaa4fd0c727 45 * }
kenjiArai 0:abaa4fd0c727 46 * @endcode
kenjiArai 0:abaa4fd0c727 47 */
kenjiArai 0:abaa4fd0c727 48 class WakeUp
kenjiArai 0:abaa4fd0c727 49 {
kenjiArai 0:abaa4fd0c727 50 public:
kenjiArai 0:abaa4fd0c727 51 /**
kenjiArai 0:abaa4fd0c727 52 * Enter Standby mode then Reset
kenjiArai 0:abaa4fd0c727 53 * @param ms required time in milliseconds
kenjiArai 0:abaa4fd0c727 54 */
kenjiArai 0:abaa4fd0c727 55 static void standby_then_reset(uint32_t ms);
kenjiArai 0:abaa4fd0c727 56
kenjiArai 0:abaa4fd0c727 57 private:
kenjiArai 0:abaa4fd0c727 58 static Callback<void()> callback;
kenjiArai 0:abaa4fd0c727 59 static void irq_handler(void);
kenjiArai 0:abaa4fd0c727 60 static void set_ms(uint32_t ms);
kenjiArai 0:abaa4fd0c727 61 static float cycles_per_ms;
kenjiArai 0:abaa4fd0c727 62 };