22 static volatile uint32_t g_u32hiYear, g_u32loYear, g_u32hiMonth, g_u32loMonth, g_u32hiDay, g_u32loDay;
23 static volatile uint32_t g_u32hiHour, g_u32loHour, g_u32hiMin, g_u32loMin, g_u32hiSec, g_u32loSec;
112 uint64_t u64Compensate;
113 int32_t i32RegInt,i32RegFra ;
115 if(!(
SYS->CSERVER & 0x1))
117 u64Compensate = (uint64_t)(0x2710000000000);
118 u64Compensate = (uint64_t)(u64Compensate / (uint64_t)i32FrequencyX10000);
120 if(u64Compensate >= (uint64_t)0x400000)
122 u64Compensate = (uint64_t)0x3FFFFF;
126 RTC->FREQADJ = (uint32_t)u64Compensate;
131 i32RegInt = (i32FrequencyX10000/10000) - 32752;
132 i32RegFra = ((((i32FrequencyX10000%10000)) * 64) + 5000) / 10000;
134 if(i32RegFra >= 0x40)
141 if ( (i32RegInt < 0) | (i32RegInt > 31) )
147 RTC->FREQADJ = (uint32_t)((i32RegInt<<8) | i32RegFra);
194 u32Tmp = (g_u32hiYear * 10ul);
195 u32Tmp += g_u32loYear;
199 u32Tmp = (g_u32hiMonth * 10ul);
200 sPt->
u32Month = u32Tmp + g_u32loMonth;
203 u32Tmp = (g_u32hiDay * 10ul);
204 sPt->
u32Day = u32Tmp + g_u32loDay;
209 u32Tmp = (g_u32hiHour * 10ul);
210 u32Tmp += g_u32loHour;
223 u32Tmp = (g_u32hiMin * 10ul);
224 u32Tmp += g_u32loMin;
227 u32Tmp = (g_u32hiSec * 10ul);
228 u32Tmp += g_u32loSec;
233 u32Tmp = (g_u32hiHour * 10ul);
234 u32Tmp += g_u32loHour;
237 u32Tmp = (g_u32hiMin * 10ul);
238 u32Tmp += g_u32loMin;
241 u32Tmp = (g_u32hiSec * 10ul);
242 u32Tmp += g_u32loSec;
291 u32Tmp = (g_u32hiYear * 10ul);
292 u32Tmp += g_u32loYear;
296 u32Tmp = (g_u32hiMonth * 10ul);
297 sPt->
u32Month = u32Tmp + g_u32loMonth;
300 u32Tmp = (g_u32hiDay * 10ul);
301 sPt->
u32Day = u32Tmp + g_u32loDay;
306 u32Tmp = (g_u32hiHour * 10ul);
307 u32Tmp += g_u32loHour;
320 u32Tmp = (g_u32hiMin * 10ul);
321 u32Tmp += g_u32loMin;
324 u32Tmp = (g_u32hiSec * 10ul);
325 u32Tmp += g_u32loSec;
331 u32Tmp = (g_u32hiHour * 10ul);
332 u32Tmp += g_u32loHour;
335 u32Tmp = (g_u32hiMin * 10ul);
336 u32Tmp += g_u32loMin;
339 u32Tmp = (g_u32hiSec * 10ul);
340 u32Tmp += g_u32loSec;
367 uint32_t u32RegCAL, u32RegTIME;
404 u32RegCAL |= ((sPt->
u32Month / 10ul) << 12);
405 u32RegCAL |= ((sPt->
u32Month % 10ul) << 8);
406 u32RegCAL |= ((sPt->
u32Day / 10ul) << 4);
407 u32RegCAL |= (sPt->
u32Day % 10ul);
409 u32RegTIME = ((sPt->
u32Hour / 10ul) << 20);
410 u32RegTIME |= ((sPt->
u32Hour % 10ul) << 16);
411 u32RegTIME |= ((sPt->
u32Minute / 10ul) << 12);
412 u32RegTIME |= ((sPt->
u32Minute % 10ul) << 8);
413 u32RegTIME |= ((sPt->
u32Second / 10ul) << 4);
420 RTC->CAL = (uint32_t)u32RegCAL;
422 RTC->TIME = (uint32_t)u32RegTIME;
448 uint32_t u32RegCALM, u32RegTALM;
481 u32RegCALM |= ((sPt->
u32Month / 10ul) << 12);
482 u32RegCALM |= ((sPt->
u32Month % 10ul) << 8);
483 u32RegCALM |= ((sPt->
u32Day / 10ul) << 4);
484 u32RegCALM |= (sPt->
u32Day % 10ul);
486 u32RegTALM = ((sPt->
u32Hour / 10ul) << 20);
487 u32RegTALM |= ((sPt->
u32Hour % 10ul) << 16);
488 u32RegTALM |= ((sPt->
u32Minute / 10ul) << 12);
489 u32RegTALM |= ((sPt->
u32Minute % 10ul) << 8);
490 u32RegTALM |= ((sPt->
u32Second / 10ul) << 4);
494 RTC->CALM = (uint32_t)u32RegCALM;
496 RTC->TALM = (uint32_t)u32RegTALM;
514 void RTC_SetDate(uint32_t u32Year, uint32_t u32Month, uint32_t u32Day, uint32_t u32DayOfWeek)
520 u32RegCAL |= ((u32Month / 10ul) << 12);
521 u32RegCAL |= ((u32Month % 10ul) << 8);
522 u32RegCAL |= ((u32Day / 10ul) << 4);
523 u32RegCAL |= (u32Day % 10ul);
531 RTC->CAL = (uint32_t)u32RegCAL;
547 void RTC_SetTime(uint32_t u32Hour, uint32_t u32Minute, uint32_t u32Second, uint32_t u32TimeMode, uint32_t u32AmPm)
557 u32RegTIME = ((u32Hour / 10ul) << 20);
558 u32RegTIME |= ((u32Hour % 10ul) << 16);
559 u32RegTIME |= ((u32Minute / 10ul) << 12);
560 u32RegTIME |= ((u32Minute % 10ul) << 8);
561 u32RegTIME |= ((u32Second / 10ul) << 4);
562 u32RegTIME |= (u32Second % 10ul);
578 RTC->TIME = (uint32_t)u32RegTIME;
597 u32RegCALM |= (((u32Year -
RTC_YEAR2000) % 10ul) << 16);
598 u32RegCALM |= ((u32Month / 10ul) << 12);
599 u32RegCALM |= ((u32Month % 10ul) << 8);
600 u32RegCALM |= ((u32Day / 10ul) << 4);
601 u32RegCALM |= (u32Day % 10ul);
606 RTC->CALM = (uint32_t)u32RegCALM;
622 void RTC_SetAlarmTime(uint32_t u32Hour, uint32_t u32Minute, uint32_t u32Second, uint32_t u32TimeMode, uint32_t u32AmPm)
632 u32RegTALM = ((u32Hour / 10ul) << 20);
633 u32RegTALM |= ((u32Hour % 10ul) << 16);
634 u32RegTALM |= ((u32Minute / 10ul) << 12);
635 u32RegTALM |= ((u32Minute % 10ul) << 8);
636 u32RegTALM |= ((u32Second / 10ul) << 4);
637 u32RegTALM |= (u32Second % 10ul);
654 RTC->TALM = (uint32_t)u32RegTALM;
671 void RTC_SetAlarmDateMask(uint8_t u8IsTenYMsk, uint8_t u8IsYMsk, uint8_t u8IsTenMMsk, uint8_t u8IsMMsk, uint8_t u8IsTenDMsk, uint8_t u8IsDMsk)
696 void RTC_SetAlarmTimeMask(uint8_t u8IsTenHMsk, uint8_t u8IsHMsk, uint8_t u8IsTenMMsk, uint8_t u8IsMMsk, uint8_t u8IsTenSMsk, uint8_t u8IsSMsk)
772 RTC->INTEN |= u32IntFlagMask;
795 RTC->INTEN &= ~u32IntFlagMask;
797 RTC->INTSTS = u32IntFlagMask;
862 u32Reg =
RTC->TAMPCTL;
869 if(u32TamperSelect & (0x1ul << i))
872 u32Reg |= (u32TmpReg << (i*4ul));
877 RTC->TAMPCTL = u32Reg;
903 u32Reg =
RTC->TAMPCTL;
909 if(u32TamperSelect & (0x1ul << i))
911 u32Reg &= ~(u32TmpReg << (i*4ul));
916 RTC->TAMPCTL = u32Reg;
948 uint32_t u32Tamper2Debounce, u32Tamper4Debounce;
951 u32Reg =
RTC->TAMPCTL;
973 if(u32PairSel & (0x1ul << i))
976 u32Reg |= (u32TmpReg << (i*8ul));
983 u32Reg |= u32Tamper2Debounce;
989 u32Reg |= u32Tamper4Debounce;
993 RTC->TAMPCTL = u32Reg;
1013 uint32_t u32Tamper2En = 0ul, u32Tamper4En = 0ul;
1016 u32Reg =
RTC->TAMPCTL;
1032 if(u32PairSel & (0x1ul << i))
1034 u32Reg &= ~(u32TmpReg << ((i*8ul)));
1038 u32Reg |= (u32Tamper2En | u32Tamper4En);
1041 RTC->TAMPCTL = u32Reg;
1076 u32Reg =
RTC->TAMPCTL;
1084 RTC->TAMPSEED = u32Seed;
1086 RTC->TAMPCTL = u32Reg;
#define RTC_TAMPCTL_DYNSRC_Msk
#define RTC_TAMPCTL_DYNPR0EN_Msk
#define RTC_TALM_TENSEC_Msk
#define RTC_TAMPCTL_TAMP1DBEN_Msk
#define RTC_TAMPCTL_SEEDRLD_Msk
#define RTC_TAMSK_MTENHR_Pos
#define RTC_CAMSK_MTENDAY_Pos
#define RTC_TIME_TENMIN_Pos
#define RTC_TIME_TENSEC_Pos
void RTC_Open(S_RTC_TIME_DATA_T *sPt)
Initialize RTC module and start counting.
void RTC_EnableInt(uint32_t u32IntFlagMask)
Enable RTC Interrupt.
void RTC_SetTime(uint32_t u32Hour, uint32_t u32Minute, uint32_t u32Second, uint32_t u32TimeMode, uint32_t u32AmPm)
Update RTC Current Time.
#define RTC_CAL_TENMON_Pos
void RTC_DisableSpareRegister(void)
Disable Spare Register.
#define RTC_CALM_TENDAY_Pos
#define RTC_CALM_TENYEAR_Msk
#define RTC_TIME_TENHR_Msk
void RTC_DynamicTamperEnable(uint32_t u32PairSel, uint32_t u32DebounceEn, uint32_t u32Pair1Source, uint32_t u32Pair2Source)
Dynamic Tamper Detect.
void RTC_SetAlarmTimeMask(uint8_t u8IsTenHMsk, uint8_t u8IsHMsk, uint8_t u8IsTenMMsk, uint8_t u8IsMMsk, uint8_t u8IsTenSMsk, uint8_t u8IsSMsk)
Set RTC Alarm Time Mask Function.
#define RTC_TAMPCTL_DYN1ISS_Pos
#define RTC_INIT_ACTIVE_Msk
uint32_t RTC_GetDayOfWeek(void)
Get Day of the Week.
NuMicro peripheral access layer header file.
#define RTC_TAMPCTL_TAMP0DBEN_Pos
#define RTC_CAL_TENDAY_Msk
#define RTC_WEEKDAY_WEEKDAY_Msk
#define RTC_TAMSK_MSEC_Pos
#define RTC_TAMSK_MTENMIN_Pos
#define RTC_CALM_YEAR_Pos
#define RTC_CAMSK_MTENYEAR_Pos
#define RTC_TIME_TENSEC_Msk
void RTC_SetDateAndTime(S_RTC_TIME_DATA_T *sPt)
Update Current RTC Date and Time.
void RTC_StaticTamperEnable(uint32_t u32TamperSelect, uint32_t u32DetecLevel, uint32_t u32DebounceEn)
Static Tamper Detect.
#define RTC_TALM_TENMIN_Msk
#define RTC_TAMPCTL_DYN2ISS_Msk
#define RTC_CLKFMT_24HEN_Msk
#define RTC_TAMPCTL_TAMP0DBEN_Msk
#define RTC_TAMPCTL_TAMP1EN_Msk
#define RTC_CALM_TENMON_Pos
#define RTC_CAL_TENDAY_Pos
#define RTC_TALM_TENHR_Pos
__STATIC_INLINE void RTC_WaitAccessEnable(void)
Wait RTC Access Enable.
#define RTC_TAMPCTL_DYN2ISS_Pos
void RTC_SetAlarmDateMask(uint8_t u8IsTenYMsk, uint8_t u8IsYMsk, uint8_t u8IsTenMMsk, uint8_t u8IsMMsk, uint8_t u8IsTenDMsk, uint8_t u8IsDMsk)
Set RTC Alarm Date Mask Function.
void RTC_Close(void)
Disable RTC Clock.
void RTC_DynamicTamperConfig(uint32_t u32ChangeRate, uint32_t u32SeedReload, uint32_t u32RefPattern, uint32_t u32Seed)
Config dynamic tamper.
#define RTC_CAL_TENYEAR_Msk
#define RTC_CAMSK_MDAY_Pos
#define CLK_APBCLK0_RTCCKEN_Msk
#define RTC_SPRCTL_SPRRWEN_Msk
#define RTC_TAMPCTL_TAMP4DBEN_Msk
#define RTC_TAMPCTL_DYNSRC_Pos
#define RTC_CAMSK_MMON_Pos
#define RTC_TAMPCTL_TAMP0EN_Msk
#define RTC_TAMSK_MTENSEC_Pos
void RTC_SetDate(uint32_t u32Year, uint32_t u32Month, uint32_t u32Day, uint32_t u32DayOfWeek)
Update RTC Current Date.
#define RTC_TALM_TENSEC_Pos
#define RTC_CAMSK_MTENMON_Pos
#define RTC_TAMPCTL_TAMP5EN_Msk
void RTC_SetAlarmDateAndTime(S_RTC_TIME_DATA_T *sPt)
Update RTC Alarm Date and Time.
#define RTC_TIME_TENMIN_Msk
void RTC_SetAlarmTime(uint32_t u32Hour, uint32_t u32Minute, uint32_t u32Second, uint32_t u32TimeMode, uint32_t u32AmPm)
Update RTC Alarm Time.
#define RTC_TAMPCTL_TAMP2EN_Msk
#define RTC_TAMPCTL_DYNRATE_Msk
#define RTC_TAMPCTL_TAMP4EN_Msk
#define RTC_TAMPCTL_TAMP0LV_Msk
#define RTC_TAMSK_MHR_Pos
void RTC_SetAlarmDate(uint32_t u32Year, uint32_t u32Month, uint32_t u32Day)
Update RTC Alarm Date.
void RTC_EnableSpareAccess(void)
Enable Spare Registers Access.
#define RTC_CALM_TENMON_Msk
#define RTC_CALM_TENDAY_Msk
#define RTC_TIME_TENHR_Pos
#define RTC_TAMSK_MMIN_Pos
#define RTC_TAMPCTL_DYN1ISS_Msk
#define RTC_CAL_TENYEAR_Pos
#define MAX_TAMPER_PIN_NUM
#define RTC_TAMPCTL_TAMP0LV_Pos
#define RTC_CALM_TENYEAR_Pos
#define RTC_TALM_TENMIN_Pos
#define RTC_TICK_TICK_Msk
void RTC_SetTickPeriod(uint32_t u32TickSelection)
Set RTC Tick Period Time.
#define RTC_TAMPCTL_TAMP3EN_Msk
#define RTC_CALM_YEAR_Msk
#define RTC_CAMSK_MYEAR_Pos
#define RTC_TALM_TENHR_Msk
void RTC_DynamicTamperDisable(uint32_t u32PairSel)
Dynamic Tamper Disable.
void RTC_GetAlarmDateAndTime(S_RTC_TIME_DATA_T *sPt)
Get RTC Alarm Date and Time.
void RTC_32KCalibration(int32_t i32FrequencyX10000)
Set Frequency Compensation Data.
#define RTC_TAMPCTL_SEEDRLD_Pos
void RTC_GetDateAndTime(S_RTC_TIME_DATA_T *sPt)
Get Current RTC Date and Time.
#define RTC_TAMPCTL_TAMP2DBEN_Msk
void RTC_StaticTamperDisable(uint32_t u32TamperSelect)
Static Tamper Disable.
#define RTC_CAL_TENMON_Msk
void RTC_DisableInt(uint32_t u32IntFlagMask)
Disable RTC Interrupt.