git-svn-id: svn://svn.code.sf.net/p/chibios/svn/branches/stable_16.1.x@9973 35acf78f-673a-0410-8e92-d51de3d6d3f4
This commit is contained in:
Giovanni Di Sirio 2016-12-20 14:43:09 +00:00
parent 97724e808c
commit 3b6fc2ad8a
2 changed files with 11 additions and 3 deletions

View File

@ -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__)

View File

@ -73,6 +73,7 @@
*****************************************************************************
*** 16.1.6 ***
- HAL: Fixed STM32 RTCv2 driver does not handle the DST bit (bug #799).
- HAL: Fixed MAC driver broken on STM32F107 (bug #798).
- VAR: Fixed missing const qualifier in local shell commands array (bug #797).
- VAR: Fixed compilation error in cmsis_os.h (bug #796).