This is a RTC additional function. This is only for Nucleo F401RE & F411RE mbed(Added L152RE, F334R8, L476RG & F746xx). If you connected battery backup circuit for internal RTC, you can make a power-off and reset condition. RTC still has proper time and date.
Dependents: Nucleo_rtos_sample PB_Emma_Ethernet
Please refer following NOTE information.
/users/kenjiArai/notebook/nucleo-series-rtc-control-under-power-onoff-and-re/
SetRTC.h@0:e4c20fd769f1, 2015-02-07 (annotated)
- Committer:
- kenjiArai
- Date:
- Sat Feb 07 02:19:57 2015 +0000
- Revision:
- 0:e4c20fd769f1
- Child:
- 1:3129de8d50ea
- Child:
- 2:765470eab2a6
This is a RTC additional function. This is only for Nucleo F401RE & F411RE mbed. If you connected battery backup circuit for internal RTC, you can make a power-off and reset condition. RTC still has proper time and date.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kenjiArai | 0:e4c20fd769f1 | 1 | /* |
kenjiArai | 0:e4c20fd769f1 | 2 | * mbed Library program |
kenjiArai | 0:e4c20fd769f1 | 3 | * Check & set RTC function and set proper clock if we can set |
kenjiArai | 0:e4c20fd769f1 | 4 | * ONLY FOR "Nucleo Board" |
kenjiArai | 0:e4c20fd769f1 | 5 | * |
kenjiArai | 0:e4c20fd769f1 | 6 | * Copyright (c) 2014-2015 Kenji Arai / JH1PJL |
kenjiArai | 0:e4c20fd769f1 | 7 | * http://www.page.sannet.ne.jp/kenjia/index.html |
kenjiArai | 0:e4c20fd769f1 | 8 | * http://mbed.org/users/kenjiArai/ |
kenjiArai | 0:e4c20fd769f1 | 9 | * Created: October 24th, 2014 |
kenjiArai | 0:e4c20fd769f1 | 10 | * Revised: Feburary 7th, 2015 |
kenjiArai | 0:e4c20fd769f1 | 11 | * |
kenjiArai | 0:e4c20fd769f1 | 12 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, |
kenjiArai | 0:e4c20fd769f1 | 13 | * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE |
kenjiArai | 0:e4c20fd769f1 | 14 | * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, |
kenjiArai | 0:e4c20fd769f1 | 15 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
kenjiArai | 0:e4c20fd769f1 | 16 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
kenjiArai | 0:e4c20fd769f1 | 17 | */ |
kenjiArai | 0:e4c20fd769f1 | 18 | |
kenjiArai | 0:e4c20fd769f1 | 19 | #ifndef SET_RTC_H |
kenjiArai | 0:e4c20fd769f1 | 20 | #define SET_RTC_H |
kenjiArai | 0:e4c20fd769f1 | 21 | |
kenjiArai | 0:e4c20fd769f1 | 22 | #include "mbed.h" |
kenjiArai | 0:e4c20fd769f1 | 23 | |
kenjiArai | 0:e4c20fd769f1 | 24 | #define TIMEOUT ((uint32_t)5000) |
kenjiArai | 0:e4c20fd769f1 | 25 | #define RTC_DAT0 0x55aa55aa |
kenjiArai | 0:e4c20fd769f1 | 26 | #define RTC_DAT1 0xaa55aa55 |
kenjiArai | 0:e4c20fd769f1 | 27 | |
kenjiArai | 0:e4c20fd769f1 | 28 | enum { |
kenjiArai | 0:e4c20fd769f1 | 29 | UNKNOWN = -1, |
kenjiArai | 0:e4c20fd769f1 | 30 | OK = 0, |
kenjiArai | 0:e4c20fd769f1 | 31 | NG |
kenjiArai | 0:e4c20fd769f1 | 32 | }; |
kenjiArai | 0:e4c20fd769f1 | 33 | |
kenjiArai | 0:e4c20fd769f1 | 34 | /** Check and set RTC module inside Nucleo STM32X CPU. |
kenjiArai | 0:e4c20fd769f1 | 35 | * Latest Nucleo board has external LSE Crystal X2 but no proper setting both HW ans SW. |
kenjiArai | 0:e4c20fd769f1 | 36 | * In addition, every power on and/or reset make initial condition even HW Backup condition. |
kenjiArai | 0:e4c20fd769f1 | 37 | * This is cased by mbed initial subroutine problem. |
kenjiArai | 0:e4c20fd769f1 | 38 | * This program intends to use RTC with X2 and works well with battery back-up hardware setting. |
kenjiArai | 0:e4c20fd769f1 | 39 | * |
kenjiArai | 0:e4c20fd769f1 | 40 | * @code |
kenjiArai | 0:e4c20fd769f1 | 41 | * #include "mbed.h" |
kenjiArai | 0:e4c20fd769f1 | 42 | * #include "SetRTC.h" |
kenjiArai | 0:e4c20fd769f1 | 43 | * |
kenjiArai | 0:e4c20fd769f1 | 44 | * int main() { |
kenjiArai | 0:e4c20fd769f1 | 45 | * time_t seconds; |
kenjiArai | 0:e4c20fd769f1 | 46 | * |
kenjiArai | 0:e4c20fd769f1 | 47 | * CheckRTC(); |
kenjiArai | 0:e4c20fd769f1 | 48 | * printf("Time: %s", ctime(&seconds)); |
kenjiArai | 0:e4c20fd769f1 | 49 | * } |
kenjiArai | 0:e4c20fd769f1 | 50 | * @endcode |
kenjiArai | 0:e4c20fd769f1 | 51 | */ |
kenjiArai | 0:e4c20fd769f1 | 52 | |
kenjiArai | 0:e4c20fd769f1 | 53 | /** Check and Set RTC |
kenjiArai | 0:e4c20fd769f1 | 54 | * @param none |
kenjiArai | 0:e4c20fd769f1 | 55 | * @return if proper setting = OK, if not = NG and UNKNOWN-> no support this program |
kenjiArai | 0:e4c20fd769f1 | 56 | */ |
kenjiArai | 0:e4c20fd769f1 | 57 | int32_t SetRTC(void); |
kenjiArai | 0:e4c20fd769f1 | 58 | |
kenjiArai | 0:e4c20fd769f1 | 59 | void show_RTC_reg( void ); |
kenjiArai | 0:e4c20fd769f1 | 60 | |
kenjiArai | 0:e4c20fd769f1 | 61 | void time_enter_mode(void); |
kenjiArai | 0:e4c20fd769f1 | 62 | |
kenjiArai | 0:e4c20fd769f1 | 63 | #endif // SET_RTC_H |