mirror of https://github.com/ARMmbed/mbed-os.git
STM32 RTC : update and comment prescaler values
parent
3264b21e40
commit
990fb1c18a
|
@ -36,14 +36,6 @@
|
||||||
|
|
||||||
static RTC_HandleTypeDef RtcHandle;
|
static RTC_HandleTypeDef RtcHandle;
|
||||||
|
|
||||||
#if DEVICE_LOWPOWERTIMER
|
|
||||||
#define RTC_ASYNCH_PREDIV ((RTC_CLOCK - 1) / 0x8000)
|
|
||||||
#else
|
|
||||||
#define RTC_ASYNCH_PREDIV (0x007F)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define RTC_SYNCH_PREDIV (RTC_CLOCK / (RTC_ASYNCH_PREDIV + 1) - 1)
|
|
||||||
|
|
||||||
#if DEVICE_LOWPOWERTIMER
|
#if DEVICE_LOWPOWERTIMER
|
||||||
static void (*irq_handler)(void);
|
static void (*irq_handler)(void);
|
||||||
static void RTC_IRQHandler(void);
|
static void RTC_IRQHandler(void);
|
||||||
|
@ -114,8 +106,19 @@ void rtc_init(void)
|
||||||
RtcHandle.Init.AsynchPrediv = RTC_AUTO_1_SECOND;
|
RtcHandle.Init.AsynchPrediv = RTC_AUTO_1_SECOND;
|
||||||
#else /* TARGET_STM32F1 */
|
#else /* TARGET_STM32F1 */
|
||||||
RtcHandle.Init.HourFormat = RTC_HOURFORMAT_24;
|
RtcHandle.Init.HourFormat = RTC_HOURFORMAT_24;
|
||||||
RtcHandle.Init.AsynchPrediv = RTC_ASYNCH_PREDIV;
|
|
||||||
RtcHandle.Init.SynchPrediv = RTC_SYNCH_PREDIV;
|
/* PREDIV_A : 7-bit asynchronous prescaler */
|
||||||
|
#if DEVICE_LOWPOWERTIMER
|
||||||
|
/* PREDIV_A is set to a small value to improve the SubSeconds resolution */
|
||||||
|
/* with a 32768Hz clock, PREDIV_A=7 gives a precision of 244us */
|
||||||
|
RtcHandle.Init.AsynchPrediv = 7;
|
||||||
|
#else
|
||||||
|
/* PREDIV_A is set to the maximum value to improve the consumption */
|
||||||
|
RtcHandle.Init.AsynchPrediv = 0x007F;
|
||||||
|
#endif
|
||||||
|
/* PREDIV_S : 15-bit synchronous prescaler */
|
||||||
|
/* PREDIV_S is set in order to get a 1 Hz clock */
|
||||||
|
RtcHandle.Init.SynchPrediv = RTC_CLOCK / (RtcHandle.Init.AsynchPrediv + 1) - 1;
|
||||||
RtcHandle.Init.OutPut = RTC_OUTPUT_DISABLE;
|
RtcHandle.Init.OutPut = RTC_OUTPUT_DISABLE;
|
||||||
RtcHandle.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
|
RtcHandle.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
|
||||||
RtcHandle.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
|
RtcHandle.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
|
||||||
|
@ -304,7 +307,7 @@ static void RTC_IRQHandler(void)
|
||||||
|
|
||||||
uint32_t rtc_read_subseconds(void)
|
uint32_t rtc_read_subseconds(void)
|
||||||
{
|
{
|
||||||
return 1000000.f * ((double)(RTC_SYNCH_PREDIV - RTC->SSR) / (RTC_SYNCH_PREDIV + 1));
|
return 1000000.f * ((double)((RTC->PRER & RTC_PRER_PREDIV_S) - RTC->SSR) / ((RTC->PRER & RTC_PRER_PREDIV_S) + 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
void rtc_set_wake_up_timer(uint32_t delta)
|
void rtc_set_wake_up_timer(uint32_t delta)
|
||||||
|
|
Loading…
Reference in New Issue