diff options
Diffstat (limited to 'os')
| -rw-r--r-- | os/hal/ports/STM32/LLD/RTCv2/hal_rtc_lld.c | 13 | 
1 files changed, 10 insertions, 3 deletions
| diff --git a/os/hal/ports/STM32/LLD/RTCv2/hal_rtc_lld.c b/os/hal/ports/STM32/LLD/RTCv2/hal_rtc_lld.c index 824daa9e7..6d44570f1 100644 --- a/os/hal/ports/STM32/LLD/RTCv2/hal_rtc_lld.c +++ b/os/hal/ports/STM32/LLD/RTCv2/hal_rtc_lld.c @@ -50,6 +50,8 @@  #define RTC_DR_DT_OFFSET                    4
  #define RTC_DR_DU_OFFSET                    0
 +#define RTC_CR_BKP_OFFSET                   18
 +
  /*===========================================================================*/
  /* Driver exported variables.                                                */
  /*===========================================================================*/
 @@ -343,8 +345,9 @@ void rtc_lld_set_time(RTCDriver *rtcp, const RTCDateTime *timespec) {    /* Writing the registers.*/
    rtc_enter_init();
 -  rtcp->rtc->TR = tr;
 -  rtcp->rtc->DR = dr;
 +  rtcp->rtc->TR  = tr;
 +  rtcp->rtc->DR  = dr;
 +  rtcp->rtc->CR |= timespec->dstflag << RTC_CR_BKP_OFFSET;
    rtc_exit_init();
    /* Leaving a reentrant critical zone.*/
 @@ -361,7 +364,7 @@ void rtc_lld_set_time(RTCDriver *rtcp, const RTCDateTime *timespec) {   * @notapi
   */
  void rtc_lld_get_time(RTCDriver *rtcp, RTCDateTime *timespec) {
 -  uint32_t dr, tr;
 +  uint32_t dr, tr, cr;
    uint32_t subs;
  #if STM32_RTC_HAS_SUBSECONDS
    uint32_t ssr;
 @@ -380,6 +383,7 @@ void rtc_lld_get_time(RTCDriver *rtcp, RTCDateTime *timespec) {  #endif /* STM32_RTC_HAS_SUBSECONDS */
    tr  = rtcp->rtc->TR;
    dr  = rtcp->rtc->DR;
 +  cr  = rtcp->rtc->CR;
    rtcp->rtc->ISR &= ~RTC_ISR_RSF;
    /* Leaving a reentrant critical zone.*/
 @@ -400,6 +404,9 @@ void rtc_lld_get_time(RTCDriver *rtcp, RTCDateTime *timespec) {    /* Decoding date, this concludes the atomic read sequence.*/
    rtc_decode_date(dr, timespec);
 +
 +  /* Retrieving the DST bit.*/
 +  timespec->dstflag = (cr >> RTC_CR_BKP_OFFSET) & 1;
  }
  #if (RTC_ALARMS > 0) || defined(__DOXYGEN__)
 | 
