Mouse code for the MacroRat

Dependencies:   ITG3200 QEI

Committer:
sahilmgandhi
Date:
Sun May 14 23:18:57 2017 +0000
Revision:
18:6a4db94011d3
Publishing again

Who changed what in which revision?

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