/* Initialize the RTC peripheral */ void Chip_RTC_Init(LPC_RTC_T *pRTC) { Chip_Clock_RTCEnable(); /* 2-Second delay after enabling RTC clock */ LPC_ATIMER->DOWNCOUNTER = 2048; while (LPC_ATIMER->DOWNCOUNTER); /* Disable RTC */ Chip_RTC_Enable(pRTC, DISABLE); /* Disable Calibration */ Chip_RTC_CalibCounterCmd(pRTC, DISABLE); /* Reset RTC Clock */ Chip_RTC_ResetClockTickCounter(pRTC); /* Clear counter increment and alarm interrupt */ pRTC->ILR = RTC_IRL_RTCCIF | RTC_IRL_RTCALF; while (pRTC->ILR != 0) {} /* Clear all register to be default */ pRTC->CIIR = 0x00; pRTC->AMR = 0xFF; pRTC->CALIBRATION = 0x00; }
void Board_RTC_calibration(uint32_t value) { uint8_t calibDir = RTC_CALIB_DIR_FORWARD; if(value<0) { calibDir = RTC_CALIB_DIR_BACKWARD; value=value*(-1); } if(value>131072) value=131072; Chip_RTC_CalibConfig(LPC_RTC, value, calibDir); Chip_RTC_CalibCounterCmd(LPC_RTC, ENABLE); Chip_RTC_Enable(LPC_RTC, ENABLE); }
/* Initialize the RTC peripheral */ void Chip_RTC_Init(LPC_RTC_T *pRTC) { Chip_Clock_EnablePeriphClock(SYSCTL_CLOCK_RTC); /* Disable RTC */ Chip_RTC_Enable(pRTC, DISABLE); /* Disable Calibration */ Chip_RTC_CalibCounterCmd(pRTC, DISABLE); /* Reset RTC Clock */ Chip_RTC_ResetClockTickCounter(pRTC); /* Clear counter increment and alarm interrupt */ pRTC->ILR = RTC_IRL_RTCCIF | RTC_IRL_RTCALF; while (pRTC->ILR != 0) {} /* Clear all register to be default */ pRTC->CIIR = 0x00; pRTC->AMR = 0xFF; pRTC->CALIBRATION = 0x00; }