22static volatile uint32_t g_u32hiYear, g_u32loYear, g_u32hiMonth, g_u32loMonth, g_u32hiDay, g_u32loDay;
23static volatile uint32_t g_u32hiHour, g_u32loHour, g_u32hiMin, g_u32loMin, g_u32hiSec, g_u32loSec;
77 if(u32TimeOutCount == 0)
return -1;
105 CLK->APBCLK0 &= ~CLK_APBCLK0_RTCCKEN_Msk;
118 uint64_t u64Compensate;
119 int32_t i32RegInt,i32RegFra ;
121 if(!(
SYS->CSERVER & 0x1))
123 u64Compensate = (uint64_t)(0x2710000000000);
124 u64Compensate = (uint64_t)(u64Compensate / (uint64_t)i32FrequencyX10000);
126 if(u64Compensate >= (uint64_t)0x400000)
128 u64Compensate = (uint64_t)0x3FFFFF;
132 RTC->FREQADJ = (uint32_t)u64Compensate;
137 i32RegInt = (i32FrequencyX10000/10000) - 32752;
138 i32RegFra = ((((i32FrequencyX10000%10000)) * 64) + 5000) / 10000;
140 if(i32RegFra >= 0x40)
147 if ( (i32RegInt < 0) | (i32RegInt > 31) )
153 RTC->FREQADJ = (uint32_t)((i32RegInt<<8) | i32RegFra);
200 u32Tmp = (g_u32hiYear * 10ul);
201 u32Tmp += g_u32loYear;
205 u32Tmp = (g_u32hiMonth * 10ul);
206 sPt->
u32Month = u32Tmp + g_u32loMonth;
209 u32Tmp = (g_u32hiDay * 10ul);
210 sPt->
u32Day = u32Tmp + g_u32loDay;
215 u32Tmp = (g_u32hiHour * 10ul);
216 u32Tmp += g_u32loHour;
229 u32Tmp = (g_u32hiMin * 10ul);
230 u32Tmp += g_u32loMin;
233 u32Tmp = (g_u32hiSec * 10ul);
234 u32Tmp += g_u32loSec;
239 u32Tmp = (g_u32hiHour * 10ul);
240 u32Tmp += g_u32loHour;
243 u32Tmp = (g_u32hiMin * 10ul);
244 u32Tmp += g_u32loMin;
247 u32Tmp = (g_u32hiSec * 10ul);
248 u32Tmp += g_u32loSec;
297 u32Tmp = (g_u32hiYear * 10ul);
298 u32Tmp += g_u32loYear;
302 u32Tmp = (g_u32hiMonth * 10ul);
303 sPt->
u32Month = u32Tmp + g_u32loMonth;
306 u32Tmp = (g_u32hiDay * 10ul);
307 sPt->
u32Day = u32Tmp + g_u32loDay;
312 u32Tmp = (g_u32hiHour * 10ul);
313 u32Tmp += g_u32loHour;
326 u32Tmp = (g_u32hiMin * 10ul);
327 u32Tmp += g_u32loMin;
330 u32Tmp = (g_u32hiSec * 10ul);
331 u32Tmp += g_u32loSec;
337 u32Tmp = (g_u32hiHour * 10ul);
338 u32Tmp += g_u32loHour;
341 u32Tmp = (g_u32hiMin * 10ul);
342 u32Tmp += g_u32loMin;
345 u32Tmp = (g_u32hiSec * 10ul);
346 u32Tmp += g_u32loSec;
373 uint32_t u32RegCAL, u32RegTIME;
386 RTC->CLKFMT &= ~RTC_CLKFMT_24HEN_Msk;
410 u32RegCAL |= ((sPt->
u32Month / 10ul) << 12);
411 u32RegCAL |= ((sPt->
u32Month % 10ul) << 8);
412 u32RegCAL |= ((sPt->
u32Day / 10ul) << 4);
413 u32RegCAL |= (sPt->
u32Day % 10ul);
415 u32RegTIME = ((sPt->
u32Hour / 10ul) << 20);
416 u32RegTIME |= ((sPt->
u32Hour % 10ul) << 16);
417 u32RegTIME |= ((sPt->
u32Minute / 10ul) << 12);
418 u32RegTIME |= ((sPt->
u32Minute % 10ul) << 8);
419 u32RegTIME |= ((sPt->
u32Second / 10ul) << 4);
426 RTC->CAL = (uint32_t)u32RegCAL;
428 RTC->TIME = (uint32_t)u32RegTIME;
454 uint32_t u32RegCALM, u32RegTALM;
467 RTC->CLKFMT &= ~RTC_CLKFMT_24HEN_Msk;
487 u32RegCALM |= ((sPt->
u32Month / 10ul) << 12);
488 u32RegCALM |= ((sPt->
u32Month % 10ul) << 8);
489 u32RegCALM |= ((sPt->
u32Day / 10ul) << 4);
490 u32RegCALM |= (sPt->
u32Day % 10ul);
492 u32RegTALM = ((sPt->
u32Hour / 10ul) << 20);
493 u32RegTALM |= ((sPt->
u32Hour % 10ul) << 16);
494 u32RegTALM |= ((sPt->
u32Minute / 10ul) << 12);
495 u32RegTALM |= ((sPt->
u32Minute % 10ul) << 8);
496 u32RegTALM |= ((sPt->
u32Second / 10ul) << 4);
500 RTC->CALM = (uint32_t)u32RegCALM;
502 RTC->TALM = (uint32_t)u32RegTALM;
520void RTC_SetDate(uint32_t u32Year, uint32_t u32Month, uint32_t u32Day, uint32_t u32DayOfWeek)
526 u32RegCAL |= ((u32Month / 10ul) << 12);
527 u32RegCAL |= ((u32Month % 10ul) << 8);
528 u32RegCAL |= ((u32Day / 10ul) << 4);
529 u32RegCAL |= (u32Day % 10ul);
537 RTC->CAL = (uint32_t)u32RegCAL;
553void RTC_SetTime(uint32_t u32Hour, uint32_t u32Minute, uint32_t u32Second, uint32_t u32TimeMode, uint32_t u32AmPm)
563 u32RegTIME = ((u32Hour / 10ul) << 20);
564 u32RegTIME |= ((u32Hour % 10ul) << 16);
565 u32RegTIME |= ((u32Minute / 10ul) << 12);
566 u32RegTIME |= ((u32Minute % 10ul) << 8);
567 u32RegTIME |= ((u32Second / 10ul) << 4);
568 u32RegTIME |= (u32Second % 10ul);
576 RTC->CLKFMT &= ~RTC_CLKFMT_24HEN_Msk;
584 RTC->TIME = (uint32_t)u32RegTIME;
603 u32RegCALM |= (((u32Year -
RTC_YEAR2000) % 10ul) << 16);
604 u32RegCALM |= ((u32Month / 10ul) << 12);
605 u32RegCALM |= ((u32Month % 10ul) << 8);
606 u32RegCALM |= ((u32Day / 10ul) << 4);
607 u32RegCALM |= (u32Day % 10ul);
612 RTC->CALM = (uint32_t)u32RegCALM;
628void RTC_SetAlarmTime(uint32_t u32Hour, uint32_t u32Minute, uint32_t u32Second, uint32_t u32TimeMode, uint32_t u32AmPm)
638 u32RegTALM = ((u32Hour / 10ul) << 20);
639 u32RegTALM |= ((u32Hour % 10ul) << 16);
640 u32RegTALM |= ((u32Minute / 10ul) << 12);
641 u32RegTALM |= ((u32Minute % 10ul) << 8);
642 u32RegTALM |= ((u32Second / 10ul) << 4);
643 u32RegTALM |= (u32Second % 10ul);
651 RTC->CLKFMT &= ~RTC_CLKFMT_24HEN_Msk;
660 RTC->TALM = (uint32_t)u32RegTALM;
677void RTC_SetAlarmDateMask(uint8_t u8IsTenYMsk, uint8_t u8IsYMsk, uint8_t u8IsTenMMsk, uint8_t u8IsMMsk, uint8_t u8IsTenDMsk, uint8_t u8IsDMsk)
702void RTC_SetAlarmTimeMask(uint8_t u8IsTenHMsk, uint8_t u8IsHMsk, uint8_t u8IsTenMMsk, uint8_t u8IsMMsk, uint8_t u8IsTenSMsk, uint8_t u8IsSMsk)
755 RTC->TICK = (
RTC->TICK & ~RTC_TICK_TICK_Msk) | u32TickSelection;
778 RTC->INTEN |= u32IntFlagMask;
801 RTC->INTEN &= ~u32IntFlagMask;
803 RTC->INTSTS = u32IntFlagMask;
835 RTC->SPRCTL &= ~RTC_SPRCTL_SPRRWEN_Msk;
868 u32Reg =
RTC->TAMPCTL;
875 if(u32TamperSelect & (0x1ul << i))
878 u32Reg |= (u32TmpReg << (i*4ul));
883 RTC->TAMPCTL = u32Reg;
909 u32Reg =
RTC->TAMPCTL;
915 if(u32TamperSelect & (0x1ul << i))
917 u32Reg &= ~(u32TmpReg << (i*4ul));
922 RTC->TAMPCTL = u32Reg;
954 uint32_t u32Tamper2Debounce, u32Tamper4Debounce;
957 u32Reg =
RTC->TAMPCTL;
979 if(u32PairSel & (0x1ul << i))
982 u32Reg |= (u32TmpReg << (i*8ul));
988 u32Reg &= ~RTC_TAMPCTL_TAMP2EN_Msk;
989 u32Reg |= u32Tamper2Debounce;
994 u32Reg &= ~RTC_TAMPCTL_TAMP4EN_Msk;
995 u32Reg |= u32Tamper4Debounce;
999 RTC->TAMPCTL = u32Reg;
1019 uint32_t u32Tamper2En = 0ul, u32Tamper4En = 0ul;
1022 u32Reg =
RTC->TAMPCTL;
1038 if(u32PairSel & (0x1ul << i))
1040 u32Reg &= ~(u32TmpReg << ((i*8ul)));
1044 u32Reg |= (u32Tamper2En | u32Tamper4En);
1047 RTC->TAMPCTL = u32Reg;
1082 u32Reg =
RTC->TAMPCTL;
1090 RTC->TAMPSEED = u32Seed;
1092 RTC->TAMPCTL = u32Reg;
NuMicro peripheral access layer header file.
#define RTC_TAMPCTL_TAMP0DBEN_Msk
#define RTC_TAMSK_MTENMIN_Pos
#define RTC_CAL_TENDAY_Msk
#define RTC_CAL_TENYEAR_Msk
#define RTC_TAMPCTL_TAMP2DBEN_Msk
#define RTC_CAMSK_MTENMON_Pos
#define RTC_TAMPCTL_DYNSRC_Msk
#define RTC_TAMPCTL_DYN2ISS_Pos
#define RTC_CAMSK_MDAY_Pos
#define RTC_TIME_TENSEC_Msk
#define RTC_TAMPCTL_DYN1ISS_Msk
#define RTC_TALM_TENMIN_Pos
#define RTC_TAMPCTL_TAMP2EN_Msk
#define RTC_TIME_TENSEC_Pos
#define RTC_CAMSK_MMON_Pos
#define RTC_TAMPCTL_DYNSRC_Pos
#define RTC_TAMPCTL_SEEDRLD_Msk
#define RTC_TAMPCTL_TAMP0LV_Pos
#define RTC_TAMPCTL_DYN2ISS_Msk
#define RTC_SPRCTL_SPRRWEN_Msk
#define RTC_TALM_TENSEC_Pos
#define RTC_CAMSK_MYEAR_Pos
#define RTC_TAMSK_MSEC_Pos
#define RTC_TALM_TENMIN_Msk
#define RTC_CALM_TENYEAR_Msk
#define RTC_TIME_TENHR_Pos
#define RTC_CALM_YEAR_Pos
#define RTC_TAMPCTL_TAMP0EN_Msk
#define RTC_CAL_TENMON_Pos
#define RTC_CALM_TENDAY_Pos
#define RTC_CLKFMT_24HEN_Msk
#define RTC_TAMPCTL_TAMP5EN_Msk
#define RTC_TAMPCTL_DYN1ISS_Pos
#define RTC_CALM_TENMON_Pos
#define RTC_CAL_TENMON_Msk
#define RTC_TAMSK_MTENHR_Pos
#define RTC_TAMPCTL_TAMP0LV_Msk
#define RTC_CAL_TENYEAR_Pos
#define RTC_TIME_TENMIN_Msk
#define RTC_TAMPCTL_TAMP3EN_Msk
#define RTC_TAMPCTL_SEEDRLD_Pos
#define RTC_TAMSK_MMIN_Pos
#define RTC_TALM_TENSEC_Msk
#define RTC_TAMPCTL_TAMP0DBEN_Pos
#define RTC_TAMPCTL_TAMP4DBEN_Msk
#define RTC_CAL_TENDAY_Pos
#define RTC_TAMSK_MHR_Pos
#define RTC_WEEKDAY_WEEKDAY_Msk
#define RTC_CAMSK_MTENYEAR_Pos
#define RTC_CALM_TENMON_Msk
#define RTC_TIME_TENMIN_Pos
#define RTC_INIT_ACTIVE_Msk
#define RTC_TAMPCTL_TAMP4EN_Msk
#define RTC_TAMPCTL_TAMP1EN_Msk
#define RTC_CAMSK_MTENDAY_Pos
#define RTC_TAMPCTL_DYNPR0EN_Msk
#define RTC_TALM_TENHR_Pos
#define RTC_CALM_TENDAY_Msk
#define RTC_TAMPCTL_DYNRATE_Msk
#define RTC_TAMSK_MTENSEC_Pos
#define RTC_CALM_YEAR_Msk
#define RTC_TIME_TENHR_Msk
#define RTC_TALM_TENHR_Msk
#define RTC_TAMPCTL_TAMP1DBEN_Msk
#define RTC_CALM_TENYEAR_Pos
#define MAX_TAMPER_PIN_NUM
void RTC_EnableInt(uint32_t u32IntFlagMask)
Enable RTC Interrupt.
void RTC_32KCalibration(int32_t i32FrequencyX10000)
Set Frequency Compensation Data.
void RTC_DynamicTamperEnable(uint32_t u32PairSel, uint32_t u32DebounceEn, uint32_t u32Pair1Source, uint32_t u32Pair2Source)
Dynamic Tamper Detect.
uint32_t RTC_GetDayOfWeek(void)
Get Day of the Week.
void RTC_SetDateAndTime(S_RTC_TIME_DATA_T *sPt)
Update Current RTC Date and Time.
void RTC_StaticTamperDisable(uint32_t u32TamperSelect)
Static Tamper Disable.
void RTC_DynamicTamperDisable(uint32_t u32PairSel)
Dynamic Tamper Disable.
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.
void RTC_GetAlarmDateAndTime(S_RTC_TIME_DATA_T *sPt)
Get RTC Alarm Date and Time.
void RTC_SetAlarmDateAndTime(S_RTC_TIME_DATA_T *sPt)
Update RTC Alarm Date and Time.
void RTC_EnableSpareAccess(void)
Enable Spare Registers Access.
int32_t RTC_Open(S_RTC_TIME_DATA_T *sPt)
Initialize RTC module and start counting.
void RTC_StaticTamperEnable(uint32_t u32TamperSelect, uint32_t u32DetecLevel, uint32_t u32DebounceEn)
Static Tamper Detect.
void RTC_SetDate(uint32_t u32Year, uint32_t u32Month, uint32_t u32Day, uint32_t u32DayOfWeek)
Update RTC Current Date.
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.
__STATIC_INLINE void RTC_WaitAccessEnable(void)
Wait RTC Access Enable.
void RTC_SetTime(uint32_t u32Hour, uint32_t u32Minute, uint32_t u32Second, uint32_t u32TimeMode, uint32_t u32AmPm)
Update RTC Current Time.
void RTC_DynamicTamperConfig(uint32_t u32ChangeRate, uint32_t u32SeedReload, uint32_t u32RefPattern, uint32_t u32Seed)
Config dynamic tamper.
void RTC_SetAlarmTime(uint32_t u32Hour, uint32_t u32Minute, uint32_t u32Second, uint32_t u32TimeMode, uint32_t u32AmPm)
Update RTC Alarm Time.
void RTC_DisableInt(uint32_t u32IntFlagMask)
Disable RTC Interrupt.
void RTC_DisableSpareRegister(void)
Disable Spare Register.
void RTC_SetTickPeriod(uint32_t u32TickSelection)
Set RTC Tick Period Time.
void RTC_SetAlarmDate(uint32_t u32Year, uint32_t u32Month, uint32_t u32Day)
Update RTC Alarm Date.
void RTC_GetDateAndTime(S_RTC_TIME_DATA_T *sPt)
Get Current RTC Date and Time.