|
@@ -6,6 +6,7 @@
|
|
|
* Change Logs:
|
|
|
* Date Author Notes
|
|
|
* 2021-01-28 greedyhao first version
|
|
|
+ * 2021-03-19 iysheng modify just set time first power up
|
|
|
*/
|
|
|
|
|
|
#include "board.h"
|
|
@@ -95,30 +96,44 @@ uint8_t irtc_sfr_read(uint32_t cmd)
|
|
|
IRTC_EXIT_CRITICAL();
|
|
|
}
|
|
|
|
|
|
+static void _init_rtc_clock(void)
|
|
|
+{
|
|
|
+ uint8_t rtccon0;
|
|
|
+ uint8_t rtccon2;
|
|
|
+
|
|
|
+ rtccon0 = irtc_sfr_read(RTCCON0_CMD);
|
|
|
+ rtccon2 = irtc_sfr_read(RTCCON2_CMD);
|
|
|
+#ifdef RTC_USING_INTERNAL_CLK
|
|
|
+ rtccon0 &= ~RTC_CON0_XOSC32K_ENABLE;
|
|
|
+ rtccon0 |= RTC_CON0_INTERNAL_32K;
|
|
|
+ rtccon2 | RTC_CON2_32K_SELECT;
|
|
|
+#else
|
|
|
+ rtccon0 |= RTC_CON0_XOSC32K_ENABLE;
|
|
|
+ rtccon0 &= ~RTC_CON0_INTERNAL_32K;
|
|
|
+ rtccon2 & ~RTC_CON2_32K_SELECT;
|
|
|
+#endif
|
|
|
+ irtc_sfr_write(RTCCON0_CMD, rtccon0);
|
|
|
+ irtc_sfr_write(RTCCON2_CMD, rtccon2);
|
|
|
+}
|
|
|
+
|
|
|
void hal_rtc_init(void)
|
|
|
{
|
|
|
time_t sec = 0;
|
|
|
struct tm tm_new = {0};
|
|
|
+ uint8_t temp;
|
|
|
|
|
|
- uint8_t temp = irtc_sfr_read(RTCCON0_CMD);
|
|
|
- temp &= ~RTC_CON0_XOSC32K_ENABLE;
|
|
|
- temp |= RTC_CON0_EXTERNAL_32K;
|
|
|
- irtc_sfr_write(RTCCON0_CMD, temp);
|
|
|
- temp = irtc_sfr_read(RTCCON2_CMD);
|
|
|
- irtc_sfr_write(RTCCON2_CMD, temp | RTC_CON2_32K_SELECT);
|
|
|
-
|
|
|
+ _init_rtc_clock();
|
|
|
temp = irtc_sfr_read(RTCCON0_CMD);
|
|
|
- if (temp & BIT(7)) {
|
|
|
- temp &= ~BIT(7);
|
|
|
+ if (temp & RTC_CON0_PWRUP_FIRST) {
|
|
|
+ temp &= ~RTC_CON0_PWRUP_FIRST;
|
|
|
irtc_sfr_write(RTCCON0_CMD, temp); /* First power on */
|
|
|
- }
|
|
|
+ tm_new.tm_mday = 29;
|
|
|
+ tm_new.tm_mon = 1 - 1;
|
|
|
+ tm_new.tm_year = 2021 - 1900;
|
|
|
+ sec = timegm(&tm_new);
|
|
|
|
|
|
- tm_new.tm_mday = 29;
|
|
|
- tm_new.tm_mon = 1 - 1;
|
|
|
- tm_new.tm_year = 2021 - 1900;
|
|
|
- sec = timegm(&tm_new);
|
|
|
-
|
|
|
- irtc_time_write(RTCCNT_CMD, sec);
|
|
|
+ irtc_time_write(RTCCNT_CMD, sec);
|
|
|
+ }
|
|
|
}
|
|
|
/************** HAL End *******************/
|
|
|
|