Paul Paterson / mbed-dev

Fork of mbed-dev by mbed official

Committer:
ptpaterson
Date:
Thu Nov 03 16:21:53 2016 +0000
Revision:
150:cd63f849362a
Parent:
149:156823d33999
targets LPC11Cxx, LPC15xx:  can_api can_filter function properly returns 0 if handle argument is out of bounds (handle > 32).

Who changed what in which revision?

UserRevisionLine numberNew contents of line
<> 144:ef7eb2e8f9f7 1 /**************************************************************************//**
<> 144:ef7eb2e8f9f7 2 * @file rtc.h
<> 144:ef7eb2e8f9f7 3 * @version V1.00
<> 144:ef7eb2e8f9f7 4 * $Revision: 18 $
<> 144:ef7eb2e8f9f7 5 * $Date: 14/10/01 2:43p $
<> 144:ef7eb2e8f9f7 6 * @brief NUC472/NUC442 RTC driver header file
<> 144:ef7eb2e8f9f7 7 *
<> 144:ef7eb2e8f9f7 8 * @note
<> 144:ef7eb2e8f9f7 9 * Copyright (C) 2013 Nuvoton Technology Corp. All rights reserved.
<> 144:ef7eb2e8f9f7 10 *****************************************************************************/
<> 144:ef7eb2e8f9f7 11
<> 144:ef7eb2e8f9f7 12 #ifndef __RTC_H
<> 144:ef7eb2e8f9f7 13 #define __RTC_H
<> 144:ef7eb2e8f9f7 14
<> 144:ef7eb2e8f9f7 15 #ifdef __cplusplus
<> 144:ef7eb2e8f9f7 16 extern "C"
<> 144:ef7eb2e8f9f7 17 {
<> 144:ef7eb2e8f9f7 18 #endif
<> 144:ef7eb2e8f9f7 19
<> 144:ef7eb2e8f9f7 20
<> 144:ef7eb2e8f9f7 21 /** @addtogroup NUC472_442_Device_Driver NUC472/NUC442 Device Driver
<> 144:ef7eb2e8f9f7 22 @{
<> 144:ef7eb2e8f9f7 23 */
<> 144:ef7eb2e8f9f7 24
<> 144:ef7eb2e8f9f7 25 /** @addtogroup NUC472_442_RTC_Driver RTC Driver
<> 144:ef7eb2e8f9f7 26 @{
<> 144:ef7eb2e8f9f7 27 */
<> 144:ef7eb2e8f9f7 28
<> 144:ef7eb2e8f9f7 29
<> 144:ef7eb2e8f9f7 30 /** @addtogroup NUC472_442_RTC_EXPORTED_CONSTANTS RTC Exported Constants
<> 144:ef7eb2e8f9f7 31 @{
<> 144:ef7eb2e8f9f7 32 */
<> 144:ef7eb2e8f9f7 33
<> 144:ef7eb2e8f9f7 34
<> 144:ef7eb2e8f9f7 35 #define RTC_INIT_KEY 0xA5EB1357UL /*!< RTC Access Key \hideinitializer */
<> 144:ef7eb2e8f9f7 36 #define RTC_WRITE_KEY 0xA965 /*!< RTC Access Key \hideinitializer */
<> 144:ef7eb2e8f9f7 37
<> 144:ef7eb2e8f9f7 38 #define RTC_WAIT_COUNT 0xFFFFFFFF /*!< Initial Time Out Value \hideinitializer */
<> 144:ef7eb2e8f9f7 39
<> 144:ef7eb2e8f9f7 40 #define RTC_YEAR2000 2000 /*!< RTC Reference \hideinitializer */
<> 144:ef7eb2e8f9f7 41 #define RTC_FCR_REFERENCE 32761 /*!< RTC Reference \hideinitializer */
<> 144:ef7eb2e8f9f7 42
<> 144:ef7eb2e8f9f7 43 #define RTC_CLOCK_12 0 /*!< RTC 12 Hour \hideinitializer */
<> 144:ef7eb2e8f9f7 44 #define RTC_CLOCK_24 1 /*!< RTC 24 Hour \hideinitializer */
<> 144:ef7eb2e8f9f7 45
<> 144:ef7eb2e8f9f7 46 #define RTC_AM 1 /*!< RTC AM \hideinitializer */
<> 144:ef7eb2e8f9f7 47 #define RTC_PM 2 /*!< RTC PM \hideinitializer */
<> 144:ef7eb2e8f9f7 48
<> 144:ef7eb2e8f9f7 49 #define RTC_TICK_1_SEC ((uint32_t) 0x00000000) /*!< Time tick is 1 second \hideinitializer */
<> 144:ef7eb2e8f9f7 50 #define RTC_TICK_1_2_SEC ((uint32_t) 0x00000001) /*!< Time tick is 1/2 second \hideinitializer */
<> 144:ef7eb2e8f9f7 51 #define RTC_TICK_1_4_SEC ((uint32_t) 0x00000002) /*!< Time tick is 1/4 second \hideinitializer */
<> 144:ef7eb2e8f9f7 52 #define RTC_TICK_1_8_SEC ((uint32_t) 0x00000003) /*!< Time tick is 1/8 second \hideinitializer */
<> 144:ef7eb2e8f9f7 53 #define RTC_TICK_1_16_SEC ((uint32_t) 0x00000004) /*!< Time tick is 1/16 second \hideinitializer */
<> 144:ef7eb2e8f9f7 54 #define RTC_TICK_1_32_SEC ((uint32_t) 0x00000005) /*!< Time tick is 1/32 second \hideinitializer */
<> 144:ef7eb2e8f9f7 55 #define RTC_TICK_1_64_SEC ((uint32_t) 0x00000006) /*!< Time tick is 1/64 second \hideinitializer */
<> 144:ef7eb2e8f9f7 56 #define RTC_TICK_1_128_SEC ((uint32_t) 0x00000007) /*!< Time tick is 1/128 second \hideinitializer */
<> 144:ef7eb2e8f9f7 57
<> 144:ef7eb2e8f9f7 58 #define RTC_SUNDAY ((uint32_t) 0x00000000) /*!< Day of week is sunday \hideinitializer */
<> 144:ef7eb2e8f9f7 59 #define RTC_MONDAY ((uint32_t) 0x00000001) /*!< Day of week is monday \hideinitializer */
<> 144:ef7eb2e8f9f7 60 #define RTC_TUESDAY ((uint32_t) 0x00000002) /*!< Day of week is tuesday \hideinitializer */
<> 144:ef7eb2e8f9f7 61 #define RTC_WEDNESDAY ((uint32_t) 0x00000003) /*!< Day of week is wednesday \hideinitializer */
<> 144:ef7eb2e8f9f7 62 #define RTC_THURSDAY ((uint32_t) 0x00000004) /*!< Day of week is thuesday \hideinitializer */
<> 144:ef7eb2e8f9f7 63 #define RTC_FRIDAY ((uint32_t) 0x00000005) /*!< Day of week is friday \hideinitializer */
<> 144:ef7eb2e8f9f7 64 #define RTC_SATURDAY ((uint32_t) 0x00000006) /*!< Day of week is saturday \hideinitializer */
<> 144:ef7eb2e8f9f7 65
<> 144:ef7eb2e8f9f7 66 #define RTC_TAMPER_0 0 /*!< Select Tamper 0 pin \hideinitializer */
<> 144:ef7eb2e8f9f7 67 #define RTC_TAMPER_1 1 /*!< Select Tamper 0 pin \hideinitializer */
<> 144:ef7eb2e8f9f7 68
<> 144:ef7eb2e8f9f7 69 /*@}*/ /* end of group NUC472_442_RTC_EXPORTED_CONSTANTS */
<> 144:ef7eb2e8f9f7 70
<> 144:ef7eb2e8f9f7 71
<> 144:ef7eb2e8f9f7 72 /** @addtogroup NUC472_442_RTC_EXPORTED_STRUCTS RTC Exported Structs
<> 144:ef7eb2e8f9f7 73 @{
<> 144:ef7eb2e8f9f7 74 */
<> 144:ef7eb2e8f9f7 75
<> 144:ef7eb2e8f9f7 76 /**
<> 144:ef7eb2e8f9f7 77 * @brief RTC define Time Data Struct
<> 144:ef7eb2e8f9f7 78 */
<> 144:ef7eb2e8f9f7 79 typedef struct {
<> 144:ef7eb2e8f9f7 80 uint32_t u32Year; /*!< Year value */
<> 144:ef7eb2e8f9f7 81 uint32_t u32Month; /*!< Month value */
<> 144:ef7eb2e8f9f7 82 uint32_t u32Day; /*!< Day value */
<> 144:ef7eb2e8f9f7 83 uint32_t u32DayOfWeek; /*!< Day of week value */
<> 144:ef7eb2e8f9f7 84 uint32_t u32Hour; /*!< Hour value */
<> 144:ef7eb2e8f9f7 85 uint32_t u32Minute; /*!< Minute value */
<> 144:ef7eb2e8f9f7 86 uint32_t u32Second; /*!< Second value */
<> 144:ef7eb2e8f9f7 87 uint32_t u32TimeScale; /*!< 12-Hour, 24-Hour */
<> 144:ef7eb2e8f9f7 88 uint32_t u32AmPm; /*!< Only Time Scale select 12-hr used */
<> 144:ef7eb2e8f9f7 89 } S_RTC_TIME_DATA_T;
<> 144:ef7eb2e8f9f7 90
<> 144:ef7eb2e8f9f7 91 /*@}*/ /* end of group NUC472_442_RTC_EXPORTED_STRUCTS */
<> 144:ef7eb2e8f9f7 92
<> 144:ef7eb2e8f9f7 93
<> 144:ef7eb2e8f9f7 94
<> 144:ef7eb2e8f9f7 95
<> 144:ef7eb2e8f9f7 96
<> 144:ef7eb2e8f9f7 97 /** @addtogroup NUC472_442_RTC_EXPORTED_FUNCTIONS RTC Exported Functions
<> 144:ef7eb2e8f9f7 98 @{
<> 144:ef7eb2e8f9f7 99 */
<> 144:ef7eb2e8f9f7 100
<> 144:ef7eb2e8f9f7 101
<> 144:ef7eb2e8f9f7 102 /**
<> 144:ef7eb2e8f9f7 103 * @brief Read spare register
<> 144:ef7eb2e8f9f7 104 *
<> 144:ef7eb2e8f9f7 105 * @param[in] u32RegNum The spare register number(0~23)
<> 144:ef7eb2e8f9f7 106 *
<> 144:ef7eb2e8f9f7 107 * @return Spare register content.
<> 144:ef7eb2e8f9f7 108 * \hideinitializer
<> 144:ef7eb2e8f9f7 109 */
<> 144:ef7eb2e8f9f7 110 #define RTC_READ_SPARE_REGISTER(u32RegNum) (RTC->SPR[u32RegNum])
<> 144:ef7eb2e8f9f7 111
<> 144:ef7eb2e8f9f7 112 /**
<> 144:ef7eb2e8f9f7 113 * @brief Write spare register
<> 144:ef7eb2e8f9f7 114 *
<> 144:ef7eb2e8f9f7 115 * @param[in] u32RegNum The spare register number(0~23)
<> 144:ef7eb2e8f9f7 116 * @param[in] u32RegValue The spare register value
<> 144:ef7eb2e8f9f7 117 *
<> 144:ef7eb2e8f9f7 118 * @return None
<> 144:ef7eb2e8f9f7 119 * \hideinitializer
<> 144:ef7eb2e8f9f7 120 */
<> 144:ef7eb2e8f9f7 121 #define RTC_WRITE_SPARE_REGISTER(u32RegNum, u32RegValue) (RTC->SPR[u32RegNum] = u32RegValue)
<> 144:ef7eb2e8f9f7 122
<> 144:ef7eb2e8f9f7 123 /**
<> 144:ef7eb2e8f9f7 124 * @brief According to current time, return this year is leap year or not
<> 144:ef7eb2e8f9f7 125 *
<> 144:ef7eb2e8f9f7 126 * @param None
<> 144:ef7eb2e8f9f7 127 *
<> 144:ef7eb2e8f9f7 128 * @return 0 = This year is not a leap year. \n
<> 144:ef7eb2e8f9f7 129 * 1 = This year is a leap year.
<> 144:ef7eb2e8f9f7 130 * \hideinitializer
<> 144:ef7eb2e8f9f7 131 */
<> 144:ef7eb2e8f9f7 132 #define RTC_IS_LEAP_YEAR ((RTC->LEAPYEAR & (RTC_LEAPYEAR_LEAPYEAR_Msk))?1:0)
<> 144:ef7eb2e8f9f7 133
<> 144:ef7eb2e8f9f7 134 /**
<> 144:ef7eb2e8f9f7 135 * @brief Clear alarm interrupt status.
<> 144:ef7eb2e8f9f7 136 *
<> 144:ef7eb2e8f9f7 137 * @param None
<> 144:ef7eb2e8f9f7 138 *
<> 144:ef7eb2e8f9f7 139 * @return None
<> 144:ef7eb2e8f9f7 140 * \hideinitializer
<> 144:ef7eb2e8f9f7 141 */
<> 144:ef7eb2e8f9f7 142 #define RTC_CLEAR_ALARM_INT_FLAG (RTC->INTSTS = RTC_INTSTS_ALMIF_Msk)
<> 144:ef7eb2e8f9f7 143
<> 144:ef7eb2e8f9f7 144 /**
<> 144:ef7eb2e8f9f7 145 * @brief Clear tick interrupt status.
<> 144:ef7eb2e8f9f7 146 *
<> 144:ef7eb2e8f9f7 147 * @param None
<> 144:ef7eb2e8f9f7 148 *
<> 144:ef7eb2e8f9f7 149 * @return None
<> 144:ef7eb2e8f9f7 150 * \hideinitializer
<> 144:ef7eb2e8f9f7 151 */
<> 144:ef7eb2e8f9f7 152 #define RTC_CLEAR_TICK_INT_FLAG (RTC->INTSTS = RTC_INTSTS_TICKIF_Msk)
<> 144:ef7eb2e8f9f7 153
<> 144:ef7eb2e8f9f7 154 /**
<> 144:ef7eb2e8f9f7 155 * @brief Clear tamper detect pin status.
<> 144:ef7eb2e8f9f7 156 *
<> 144:ef7eb2e8f9f7 157 * @param[in] u32PinNum tamper detect pin number. [ \ref RTC_TAMPER_0 / \ref RTC_TAMPER_1]
<> 144:ef7eb2e8f9f7 158 *
<> 144:ef7eb2e8f9f7 159 * @return None
<> 144:ef7eb2e8f9f7 160 * \hideinitializer
<> 144:ef7eb2e8f9f7 161 */
<> 144:ef7eb2e8f9f7 162 #define RTC_CLEAR_TAMPER_FLAG(u32PinNum) (RTC->TAMPSTS = (1 << u32PinNum))
<> 144:ef7eb2e8f9f7 163
<> 144:ef7eb2e8f9f7 164 /**
<> 144:ef7eb2e8f9f7 165 * @brief Get alarm interrupt status.
<> 144:ef7eb2e8f9f7 166 *
<> 144:ef7eb2e8f9f7 167 * @param None
<> 144:ef7eb2e8f9f7 168 *
<> 144:ef7eb2e8f9f7 169 * @return Alarm interrupt status
<> 144:ef7eb2e8f9f7 170 * \hideinitializer
<> 144:ef7eb2e8f9f7 171 */
<> 144:ef7eb2e8f9f7 172 #define RTC_GET_ALARM_INT_FLAG ((RTC->INTSTS & RTC_INTSTS_ALMIF_Msk) >> RTC_INTSTS_ALMIF_Pos)
<> 144:ef7eb2e8f9f7 173
<> 144:ef7eb2e8f9f7 174 /**
<> 144:ef7eb2e8f9f7 175 * @brief Get alarm interrupt status.
<> 144:ef7eb2e8f9f7 176 *
<> 144:ef7eb2e8f9f7 177 * @param None
<> 144:ef7eb2e8f9f7 178 *
<> 144:ef7eb2e8f9f7 179 * @return Alarm interrupt status
<> 144:ef7eb2e8f9f7 180 * \hideinitializer
<> 144:ef7eb2e8f9f7 181 */
<> 144:ef7eb2e8f9f7 182 #define RTC_GET_TICK_INT_FLAG ((RTC->INTSTS & RTC_INTSTS_TICKIF_Msk) >> RTC_INTSTS_TICKIF_Pos)
<> 144:ef7eb2e8f9f7 183
<> 144:ef7eb2e8f9f7 184 /**
<> 144:ef7eb2e8f9f7 185 * @brief Get tamper detect pin status.
<> 144:ef7eb2e8f9f7 186 *
<> 144:ef7eb2e8f9f7 187 * @param[in] u32PinNum tamper detect pin number. [ \ref RTC_TAMPER_0 / \ref RTC_TAMPER_1]
<> 144:ef7eb2e8f9f7 188 *
<> 144:ef7eb2e8f9f7 189 * @return Tamper detect pin status
<> 144:ef7eb2e8f9f7 190 * \hideinitializer
<> 144:ef7eb2e8f9f7 191 */
<> 144:ef7eb2e8f9f7 192 #define RTC_GET_TAMPER_FLAG(u32PinNum) ( (RTC->TAMPSTS & (1 << u32PinNum)) >> u32PinNum)
<> 144:ef7eb2e8f9f7 193
<> 144:ef7eb2e8f9f7 194
<> 144:ef7eb2e8f9f7 195
<> 144:ef7eb2e8f9f7 196 void RTC_Open(S_RTC_TIME_DATA_T *sPt);
<> 144:ef7eb2e8f9f7 197 void RTC_Close(void);
<> 144:ef7eb2e8f9f7 198 void RTC_32KCalibration(int32_t i32FrequencyX100);
<> 144:ef7eb2e8f9f7 199 void RTC_SetTickPeriod(uint32_t u32TickSelection);
<> 144:ef7eb2e8f9f7 200 void RTC_EnableInt(uint32_t u32IntFlagMask);
<> 144:ef7eb2e8f9f7 201 void RTC_DisableInt(uint32_t u32IntFlagMask);
<> 144:ef7eb2e8f9f7 202 uint32_t RTC_GetDayOfWeek(void);
<> 144:ef7eb2e8f9f7 203 void RTC_DisableTamperDetection(uint32_t u32PinNumber);
<> 144:ef7eb2e8f9f7 204 void RTC_EnableTamperDetection(uint32_t u32PinNumber, uint32_t u32PinCondition, uint32_t u32IntFlag, uint32_t u32ClearFlag, uint32_t u32DestroyEn);
<> 144:ef7eb2e8f9f7 205 void RTC_EnableSpareAccess(void);
<> 144:ef7eb2e8f9f7 206 void RTC_SetAlarmTime(uint32_t u32Hour, uint32_t u32Minute, uint32_t u32Second, uint32_t u32TimeMode, uint32_t u32AmPm);
<> 144:ef7eb2e8f9f7 207 void RTC_SetAlarmDate(uint32_t u32Year, uint32_t u32Month, uint32_t u32Day);
<> 144:ef7eb2e8f9f7 208 void RTC_SetTime(uint32_t u32Hour, uint32_t u32Minute, uint32_t u32Second, uint32_t u32TimeMode, uint32_t u32AmPm);
<> 144:ef7eb2e8f9f7 209 void RTC_SetDate(uint32_t u32Year, uint32_t u32Month, uint32_t u32Day, uint32_t u32DayOfWeek);
<> 144:ef7eb2e8f9f7 210 void RTC_SetAlarmDateAndTime(S_RTC_TIME_DATA_T *sPt);
<> 144:ef7eb2e8f9f7 211 void RTC_SetDateAndTime(S_RTC_TIME_DATA_T *sPt);
<> 144:ef7eb2e8f9f7 212 void RTC_GetAlarmDateAndTime(S_RTC_TIME_DATA_T *sPt);
<> 144:ef7eb2e8f9f7 213 void RTC_GetDateAndTime(S_RTC_TIME_DATA_T *sPt);
<> 144:ef7eb2e8f9f7 214
<> 144:ef7eb2e8f9f7 215
<> 144:ef7eb2e8f9f7 216
<> 144:ef7eb2e8f9f7 217 /*@}*/ /* end of group NUC472_442_RTC_EXPORTED_FUNCTIONS */
<> 144:ef7eb2e8f9f7 218
<> 144:ef7eb2e8f9f7 219
<> 144:ef7eb2e8f9f7 220 /*@}*/ /* end of group NUC472_442_RTC_Driver */
<> 144:ef7eb2e8f9f7 221
<> 144:ef7eb2e8f9f7 222 /*@}*/ /* end of group NUC472_442_Device_Driver */
<> 144:ef7eb2e8f9f7 223
<> 144:ef7eb2e8f9f7 224
<> 144:ef7eb2e8f9f7 225 #ifdef __cplusplus
<> 144:ef7eb2e8f9f7 226 }
<> 144:ef7eb2e8f9f7 227 #endif
<> 144:ef7eb2e8f9f7 228
<> 144:ef7eb2e8f9f7 229 #endif /* __RTC_H */
<> 144:ef7eb2e8f9f7 230
<> 144:ef7eb2e8f9f7 231
<> 144:ef7eb2e8f9f7 232 /*** (C) COPYRIGHT 2012 Nuvoton Technology Corp. ***/
<> 144:ef7eb2e8f9f7 233
<> 144:ef7eb2e8f9f7 234
<> 144:ef7eb2e8f9f7 235