31 #if (HAL_USE_RTC == TRUE) || defined(__DOXYGEN__)
48 static const uint8_t month_len[12] = {
49 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
52 static const uint16_t accu_month_len[12] = {
53 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334
87 #if RTC_HAS_STORAGE == TRUE
88 rtcp->
vmt = &_rtc_lld_vmt;
136 #if (RTC_ALARMS > 0) || defined(__DOXYGEN__)
184 (alarmspec != NULL));
190 #if (RTC_SUPPORTS_CALLBACKS == TRUE) || defined(__DOXYGEN__)
211 rtc_lld_set_callback(rtcp, callback);
231 timp->tm_mon = (int)timespec->
month - 1;
232 timp->tm_mday = (
int)timespec->
day;
233 timp->tm_isdst = (int)timespec->
dstflag;
234 timp->tm_wday = (
int)timespec->
dayofweek - 1;
237 timp->tm_hour = sec / 3600;
239 timp->tm_min = sec / 60;
240 timp->tm_sec = sec % 60;
242 if (NULL != tv_msec) {
243 *tv_msec = (uint32_t)timespec->
millisecond % 1000U;
247 year = timp->tm_year + 1900;
248 timp->tm_yday = timp->tm_mday - 1;
249 timp->tm_yday += (int)accu_month_len[timp->tm_mon];
250 is_leap_year = (((year % 4) == 0) && ((year % 100) != 0)) || ((year % 400) == 0);
251 if (is_leap_year && (timp->tm_mon > 1)) {
271 timespec->
month = (uint32_t)timp->tm_mon + 1U;
272 timespec->
day = (uint32_t)timp->tm_mday;
273 timespec->
dayofweek = (uint32_t)timp->tm_wday + 1U;
274 if (-1 == timp->tm_isdst) {
278 timespec->
dstflag = (uint32_t)timp->tm_isdst;
282 timespec->
millisecond = tv_msec + (uint32_t)(((timp->tm_hour * 3600) +
283 (timp->tm_min * 60) +
284 timp->tm_sec) * 1000);
300 uint32_t sec, min, hour, day, month;
308 month = timespec->
month;
316 if (day > (uint32_t)month_len[month - 1U]) {
324 fattime |= min << 5U;
325 fattime |= hour << 11U;
326 fattime |= day << 16U;
327 fattime |= month << 21U;
328 fattime |= (uint32_t)timespec->
year << 25U;