游戏王对战板,目前code还是空的

Committer:
WFKnight
Date:
Thu Jun 21 13:51:43 2018 +0000
Revision:
0:9b3d4731edbb
UART, RTOS, LED

Who changed what in which revision?

UserRevisionLine numberNew contents of line
WFKnight 0:9b3d4731edbb 1 /* mbed Microcontroller Library
WFKnight 0:9b3d4731edbb 2 * Copyright (c) 2006-2013 ARM Limited
WFKnight 0:9b3d4731edbb 3 *
WFKnight 0:9b3d4731edbb 4 * Licensed under the Apache License, Version 2.0 (the "License");
WFKnight 0:9b3d4731edbb 5 * you may not use this file except in compliance with the License.
WFKnight 0:9b3d4731edbb 6 * You may obtain a copy of the License at
WFKnight 0:9b3d4731edbb 7 *
WFKnight 0:9b3d4731edbb 8 * http://www.apache.org/licenses/LICENSE-2.0
WFKnight 0:9b3d4731edbb 9 *
WFKnight 0:9b3d4731edbb 10 * Unless required by applicable law or agreed to in writing, software
WFKnight 0:9b3d4731edbb 11 * distributed under the License is distributed on an "AS IS" BASIS,
WFKnight 0:9b3d4731edbb 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
WFKnight 0:9b3d4731edbb 13 * See the License for the specific language governing permissions and
WFKnight 0:9b3d4731edbb 14 * limitations under the License.
WFKnight 0:9b3d4731edbb 15 */
WFKnight 0:9b3d4731edbb 16 #include "hal/rtc_api.h"
WFKnight 0:9b3d4731edbb 17
WFKnight 0:9b3d4731edbb 18 #include "platform/mbed_critical.h"
WFKnight 0:9b3d4731edbb 19 #include "platform/mbed_rtc_time.h"
WFKnight 0:9b3d4731edbb 20 #include "platform/SingletonPtr.h"
WFKnight 0:9b3d4731edbb 21 #include "platform/PlatformMutex.h"
WFKnight 0:9b3d4731edbb 22
WFKnight 0:9b3d4731edbb 23 static SingletonPtr<PlatformMutex> _mutex;
WFKnight 0:9b3d4731edbb 24
WFKnight 0:9b3d4731edbb 25 #if DEVICE_RTC
WFKnight 0:9b3d4731edbb 26
WFKnight 0:9b3d4731edbb 27 static void (*_rtc_init)(void) = rtc_init;
WFKnight 0:9b3d4731edbb 28 static int (*_rtc_isenabled)(void) = rtc_isenabled;
WFKnight 0:9b3d4731edbb 29 static time_t (*_rtc_read)(void) = rtc_read;
WFKnight 0:9b3d4731edbb 30 static void (*_rtc_write)(time_t t) = rtc_write;
WFKnight 0:9b3d4731edbb 31
WFKnight 0:9b3d4731edbb 32 #elif DEVICE_LPTICKER
WFKnight 0:9b3d4731edbb 33
WFKnight 0:9b3d4731edbb 34 #include "drivers/LowPowerTimer.h"
WFKnight 0:9b3d4731edbb 35
WFKnight 0:9b3d4731edbb 36 static SingletonPtr<mbed::LowPowerTimer> _rtc_lp_timer;
WFKnight 0:9b3d4731edbb 37 static uint64_t _rtc_lp_base;
WFKnight 0:9b3d4731edbb 38 static bool _rtc_enabled;
WFKnight 0:9b3d4731edbb 39
WFKnight 0:9b3d4731edbb 40 static void _rtc_lpticker_init(void)
WFKnight 0:9b3d4731edbb 41 {
WFKnight 0:9b3d4731edbb 42 _rtc_lp_timer->start();
WFKnight 0:9b3d4731edbb 43 _rtc_enabled = true;
WFKnight 0:9b3d4731edbb 44 }
WFKnight 0:9b3d4731edbb 45
WFKnight 0:9b3d4731edbb 46 static int _rtc_lpticker_isenabled(void)
WFKnight 0:9b3d4731edbb 47 {
WFKnight 0:9b3d4731edbb 48 return (_rtc_enabled == true);
WFKnight 0:9b3d4731edbb 49 }
WFKnight 0:9b3d4731edbb 50
WFKnight 0:9b3d4731edbb 51 static time_t _rtc_lpticker_read(void)
WFKnight 0:9b3d4731edbb 52 {
WFKnight 0:9b3d4731edbb 53 return (uint64_t)_rtc_lp_timer->read() + _rtc_lp_base;
WFKnight 0:9b3d4731edbb 54 }
WFKnight 0:9b3d4731edbb 55
WFKnight 0:9b3d4731edbb 56 static void _rtc_lpticker_write(time_t t)
WFKnight 0:9b3d4731edbb 57 {
WFKnight 0:9b3d4731edbb 58 _rtc_lp_base = t;
WFKnight 0:9b3d4731edbb 59 }
WFKnight 0:9b3d4731edbb 60
WFKnight 0:9b3d4731edbb 61 static void (*_rtc_init)(void) = _rtc_lpticker_init;
WFKnight 0:9b3d4731edbb 62 static int (*_rtc_isenabled)(void) = _rtc_lpticker_isenabled;
WFKnight 0:9b3d4731edbb 63 static time_t (*_rtc_read)(void) = _rtc_lpticker_read;
WFKnight 0:9b3d4731edbb 64 static void (*_rtc_write)(time_t t) = _rtc_lpticker_write;
WFKnight 0:9b3d4731edbb 65
WFKnight 0:9b3d4731edbb 66 #else /* DEVICE_LPTICKER */
WFKnight 0:9b3d4731edbb 67
WFKnight 0:9b3d4731edbb 68 static void (*_rtc_init)(void) = NULL;
WFKnight 0:9b3d4731edbb 69 static int (*_rtc_isenabled)(void) = NULL;
WFKnight 0:9b3d4731edbb 70 static time_t (*_rtc_read)(void) = NULL;
WFKnight 0:9b3d4731edbb 71 static void (*_rtc_write)(time_t t) = NULL;
WFKnight 0:9b3d4731edbb 72 #endif /* DEVICE_LPTICKER */
WFKnight 0:9b3d4731edbb 73
WFKnight 0:9b3d4731edbb 74 #ifdef __cplusplus
WFKnight 0:9b3d4731edbb 75 extern "C" {
WFKnight 0:9b3d4731edbb 76 #endif
WFKnight 0:9b3d4731edbb 77 #if defined (__ICCARM__)
WFKnight 0:9b3d4731edbb 78 time_t __time32(time_t *timer)
WFKnight 0:9b3d4731edbb 79 #else
WFKnight 0:9b3d4731edbb 80 time_t time(time_t *timer)
WFKnight 0:9b3d4731edbb 81 #endif
WFKnight 0:9b3d4731edbb 82
WFKnight 0:9b3d4731edbb 83 {
WFKnight 0:9b3d4731edbb 84 _mutex->lock();
WFKnight 0:9b3d4731edbb 85 if (_rtc_isenabled != NULL) {
WFKnight 0:9b3d4731edbb 86 if (!(_rtc_isenabled())) {
WFKnight 0:9b3d4731edbb 87 set_time(0);
WFKnight 0:9b3d4731edbb 88 }
WFKnight 0:9b3d4731edbb 89 }
WFKnight 0:9b3d4731edbb 90
WFKnight 0:9b3d4731edbb 91 time_t t = (time_t)-1;
WFKnight 0:9b3d4731edbb 92 if (_rtc_read != NULL) {
WFKnight 0:9b3d4731edbb 93 t = _rtc_read();
WFKnight 0:9b3d4731edbb 94 }
WFKnight 0:9b3d4731edbb 95
WFKnight 0:9b3d4731edbb 96 if (timer != NULL) {
WFKnight 0:9b3d4731edbb 97 *timer = t;
WFKnight 0:9b3d4731edbb 98 }
WFKnight 0:9b3d4731edbb 99 _mutex->unlock();
WFKnight 0:9b3d4731edbb 100 return t;
WFKnight 0:9b3d4731edbb 101 }
WFKnight 0:9b3d4731edbb 102
WFKnight 0:9b3d4731edbb 103 void set_time(time_t t) {
WFKnight 0:9b3d4731edbb 104 _mutex->lock();
WFKnight 0:9b3d4731edbb 105 if (_rtc_init != NULL) {
WFKnight 0:9b3d4731edbb 106 _rtc_init();
WFKnight 0:9b3d4731edbb 107 }
WFKnight 0:9b3d4731edbb 108 if (_rtc_write != NULL) {
WFKnight 0:9b3d4731edbb 109 _rtc_write(t);
WFKnight 0:9b3d4731edbb 110 }
WFKnight 0:9b3d4731edbb 111 _mutex->unlock();
WFKnight 0:9b3d4731edbb 112 }
WFKnight 0:9b3d4731edbb 113
WFKnight 0:9b3d4731edbb 114 void attach_rtc(time_t (*read_rtc)(void), void (*write_rtc)(time_t), void (*init_rtc)(void), int (*isenabled_rtc)(void)) {
WFKnight 0:9b3d4731edbb 115 _mutex->lock();
WFKnight 0:9b3d4731edbb 116 _rtc_read = read_rtc;
WFKnight 0:9b3d4731edbb 117 _rtc_write = write_rtc;
WFKnight 0:9b3d4731edbb 118 _rtc_init = init_rtc;
WFKnight 0:9b3d4731edbb 119 _rtc_isenabled = isenabled_rtc;
WFKnight 0:9b3d4731edbb 120 _mutex->unlock();
WFKnight 0:9b3d4731edbb 121 }
WFKnight 0:9b3d4731edbb 122
WFKnight 0:9b3d4731edbb 123
WFKnight 0:9b3d4731edbb 124
WFKnight 0:9b3d4731edbb 125 #ifdef __cplusplus
WFKnight 0:9b3d4731edbb 126 }
WFKnight 0:9b3d4731edbb 127 #endif