ms2s,STM32 Private
Fork of WakeUp by
Diff: Device/WakeUp_STM_RTC.cpp
- Revision:
- 23:026ce8177010
- Parent:
- 20:68f2ee917691
--- a/Device/WakeUp_STM_RTC.cpp Wed Nov 11 20:20:27 2015 +0000 +++ b/Device/WakeUp_STM_RTC.cpp Wed Oct 12 09:20:07 2016 +0000 @@ -28,7 +28,7 @@ FunctionPointer WakeUp::callback; -void WakeUp::set_ms(uint32_t ms) +void WakeUp::set_ms(uint32_t s) { if (!rtc_isenabled()) { //Make sure RTC is running rtc_init(); @@ -43,7 +43,7 @@ RTC->CR &= ~RTC_CR_ALRAE; while(!(RTC->ISR & RTC_ISR_ALRAWF)); - if (ms == 0) { //Just disable alarm + if (s == 0) { //Just disable alarm //PWR->CR &= ~PWR_CR_DBP; //Disable power domain RTC->WPR = 0xFF; //Enable RTC write protection return; @@ -51,9 +51,9 @@ //RTC prescaler + calculate how many sub-seconds should be added uint32_t prescaler = (RTC->PRER & 0x7FFF) + 1; - uint32_t subsecsadd = ((ms % 1000) * prescaler) / 1000; + uint32_t subsecsadd = s* prescaler; - if ((ms < 1000) && (subsecsadd < 2)) + if ((s < 1) && (subsecsadd < 2)) subsecsadd = 2; //At least 2 subsecs delay to be sure interrupt is called __disable_irq(); //At this point we don't want IRQs anymore @@ -71,7 +71,7 @@ subsecs -= subsecsadd; //Set seconds correctly - secs += ms / 1000; + secs += s; struct tm *timeinfo = localtime(&secs); //Enable rising edge EXTI interrupt of the RTC