libopencm3
A free/libre/open-source firmware library for various ARM Cortex-M3 microcontrollers.
RTC peripheral API

libopencm3 STM32F1xx RTC More...

Collaboration diagram for RTC peripheral API:

Functions

void rtc_awake_from_off (enum rcc_osc clock_source)
 RTC Set Operational from the Off state. More...
 
void rtc_enter_config_mode (void)
 RTC Enter Configuration Mode. More...
 
void rtc_exit_config_mode (void)
 RTC Leave Configuration Mode. More...
 
void rtc_set_alarm_time (uint32_t alarm_time)
 RTC Set the Alarm Time. More...
 
void rtc_enable_alarm (void)
 RTC Enable the Alarm. More...
 
void rtc_disable_alarm (void)
 RTC Disable the Alarm. More...
 
void rtc_set_prescale_val (uint32_t prescale_val)
 RTC Set the prescaler Value. More...
 
uint32_t rtc_get_counter_val (void)
 RTC return the Counter Value. More...
 
uint32_t rtc_get_prescale_div_val (void)
 RTC return the prescaler Value. More...
 
uint32_t rtc_get_alarm_val (void)
 RTC return the Alarm Value. More...
 
void rtc_set_counter_val (uint32_t counter_val)
 RTC set the Counter. More...
 
void rtc_interrupt_enable (rtcflag_t flag_val)
 RTC Enable Interrupt. More...
 
void rtc_interrupt_disable (rtcflag_t flag_val)
 RTC Disable Interrupt. More...
 
void rtc_clear_flag (rtcflag_t flag_val)
 RTC Clear an Interrupt Flag. More...
 
uint32_t rtc_check_flag (rtcflag_t flag_val)
 RTC Return a Flag Setting. More...
 
void rtc_awake_from_standby (void)
 RTC Start RTC after Standby Mode. More...
 
void rtc_auto_awake (enum rcc_osc clock_source, uint32_t prescale_val)
 RTC Configuration on Wakeup. More...
 

Detailed Description

libopencm3 STM32F1xx RTC

Author
© 2010 Uwe Hermann uwe@h.nosp@m.erma.nosp@m.nn-uw.nosp@m.e.de
© 2010 Lord James lordj.nosp@m.ames.nosp@m.@y7ma.nosp@m.il.c.nosp@m.om
Version
1.0.0
Date
4 March 2013

The Real Time Clock peripheral consists of a set of 16 bit control, status, prescaler, counter and alarm registers. Before the latter three can be written the RTC must be placed in configuration mode by a call to rtc_enter_config_mode(). The functions below handle this implictly.

The RTC is completely reset by performing a Backup Domain reset. Note that this can affect unrelated user data contained in the Backup Domain registers. Other forms of reset will not affect the RTC registers as they are contained within the backup domain.

The RTC clock source to be used is selected by calling rcc_set_rtc_clock_source().

The LSE clock source normally comes from a 32.768kHz external crystal This clock is in the backup domain and so continues to run when only the V_BAT supply is present. A prescaler value of 7FFF will give a 1 second count quantum.

The LSI clock source is a low accuracy internal clock of about 40kHz frequency, and the HSE clock source is the external high speed clock divided by 128.

Initial configuration of the RTC consists of:

Note
reading the RTC registers may result in a corrupted value being returned in certain cases. Refer to the STM32F1xx Reference Manual.

LGPL License Terms libopencm3 License

Function Documentation

◆ rtc_auto_awake()

void rtc_auto_awake ( enum rcc_osc  clock_source,
uint32_t  prescale_val 
)

RTC Configuration on Wakeup.

Enable the backup domain clocks and write access to the backup domain. If the RTC has not been enabled, set the clock source and prescaler value. The parameters are not used if the RTC has already been enabled.

Parameters
[in]clock_sourcercc_osc. RTC clock source. Only HSE, LSE and LSI are permitted.
[in]prescale_valuint32_t. 20 bit prescale divider.

Definition at line 400 of file rtc.c.

References RCC_BKP, rcc_periph_clock_enable(), RCC_PWR, rcc_rtc_clock_enabled_flag(), rtc_awake_from_off(), rtc_awake_from_standby(), and rtc_set_prescale_val().

Here is the call graph for this function:

◆ rtc_awake_from_off()

void rtc_awake_from_off ( enum rcc_osc  clock_source)

RTC Set Operational from the Off state.

Power up the backup domain clocks, enable write access to the backup domain, select the clock source, clear the RTC registers and enable the RTC.

Parameters
[in]clock_sourcercc_osc. RTC clock source. Only the values HSE, LSE and LSI are permitted.

Definition at line 85 of file rtc.c.

References pwr_disable_backup_domain_write_protect(), RCC_BKP, rcc_enable_rtc_clock(), rcc_periph_clock_enable(), RCC_PWR, rcc_set_rtc_clock_source(), RTC_ALRH, RTC_ALRL, RTC_CNTH, RTC_CNTL, RTC_CRH, RTC_CRL, RTC_CRL_RSF, rtc_enter_config_mode(), rtc_exit_config_mode(), RTC_PRLH, and RTC_PRLL.

Referenced by rtc_auto_awake().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ rtc_awake_from_standby()

void rtc_awake_from_standby ( void  )

RTC Start RTC after Standby Mode.

Enable the backup domain clocks, enable write access to the backup domain and the RTC, and synchronise the RTC register access.

Definition at line 368 of file rtc.c.

References pwr_disable_backup_domain_write_protect(), RCC_BKP, rcc_periph_clock_enable(), RCC_PWR, RTC_CRL, RTC_CRL_RSF, and RTC_CRL_RTOFF.

Referenced by rtc_auto_awake().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ rtc_check_flag()

uint32_t rtc_check_flag ( rtcflag_t  flag_val)

RTC Return a Flag Setting.

Parameters
[in]flag_valrtcflag_t: The flag to check.
Returns
uint32_t: a nonzero value if the flag is set, zero otherwise.

Definition at line 338 of file rtc.c.

References RTC_ALR, RTC_CRL, RTC_CRL_ALRF, RTC_CRL_OWF, RTC_CRL_SECF, RTC_OW, and RTC_SEC.

◆ rtc_clear_flag()

void rtc_clear_flag ( rtcflag_t  flag_val)

RTC Clear an Interrupt Flag.

Parameters
[in]flag_valrtcflag_t: The flag to clear.

Definition at line 313 of file rtc.c.

References RTC_ALR, RTC_CRL, RTC_OW, and RTC_SEC.

◆ rtc_disable_alarm()

void rtc_disable_alarm ( void  )

RTC Disable the Alarm.

Definition at line 187 of file rtc.c.

References RTC_CRH, rtc_enter_config_mode(), and rtc_exit_config_mode().

Here is the call graph for this function:

◆ rtc_enable_alarm()

void rtc_enable_alarm ( void  )

RTC Enable the Alarm.

Definition at line 175 of file rtc.c.

References RTC_CRH, RTC_CRH_ALRIE, rtc_enter_config_mode(), and rtc_exit_config_mode().

Here is the call graph for this function:

◆ rtc_enter_config_mode()

void rtc_enter_config_mode ( void  )

RTC Enter Configuration Mode.

Prime the RTC for configuration changes by giving access to the prescaler, and counter and alarm registers.

Definition at line 128 of file rtc.c.

References RTC_CRL, RTC_CRL_CNF, and RTC_CRL_RTOFF.

Referenced by rtc_awake_from_off(), rtc_disable_alarm(), rtc_enable_alarm(), rtc_interrupt_disable(), rtc_interrupt_enable(), rtc_set_alarm_time(), rtc_set_counter_val(), and rtc_set_prescale_val().

Here is the caller graph for this function:

◆ rtc_exit_config_mode()

void rtc_exit_config_mode ( void  )

RTC Leave Configuration Mode.

Revert the RTC to operational state.

Definition at line 145 of file rtc.c.

References RTC_CRL, and RTC_CRL_RTOFF.

Referenced by rtc_awake_from_off(), rtc_disable_alarm(), rtc_enable_alarm(), rtc_interrupt_disable(), rtc_interrupt_enable(), rtc_set_alarm_time(), rtc_set_counter_val(), and rtc_set_prescale_val().

Here is the caller graph for this function:

◆ rtc_get_alarm_val()

uint32_t rtc_get_alarm_val ( void  )

RTC return the Alarm Value.

Returns
uint32_t: the 32 bit alarm value.

Definition at line 236 of file rtc.c.

References RTC_ALRH, and RTC_ALRL.

◆ rtc_get_counter_val()

uint32_t rtc_get_counter_val ( void  )

RTC return the Counter Value.

Returns
uint32_t: the 32 bit counter value.

Definition at line 214 of file rtc.c.

References RTC_CNTH, and RTC_CNTL.

◆ rtc_get_prescale_div_val()

uint32_t rtc_get_prescale_div_val ( void  )

RTC return the prescaler Value.

Returns
uint32_t: the 20 bit prescale divider.

Definition at line 225 of file rtc.c.

References RTC_DIVH, and RTC_DIVL.

◆ rtc_interrupt_disable()

void rtc_interrupt_disable ( rtcflag_t  flag_val)

RTC Disable Interrupt.

Parameters
[in]flag_valrtcflag_t: The flag to disable.

Definition at line 287 of file rtc.c.

References RTC_ALR, RTC_CRH, rtc_enter_config_mode(), rtc_exit_config_mode(), RTC_OW, and RTC_SEC.

Here is the call graph for this function:

◆ rtc_interrupt_enable()

void rtc_interrupt_enable ( rtcflag_t  flag_val)

RTC Enable Interrupt.

Parameters
[in]flag_valrtcflag_t: The flag to enable.

Definition at line 261 of file rtc.c.

References RTC_ALR, RTC_CRH, RTC_CRH_ALRIE, RTC_CRH_OWIE, RTC_CRH_SECIE, rtc_enter_config_mode(), rtc_exit_config_mode(), RTC_OW, and RTC_SEC.

Here is the call graph for this function:

◆ rtc_set_alarm_time()

void rtc_set_alarm_time ( uint32_t  alarm_time)

RTC Set the Alarm Time.

Parameters
[in]alarm_timeuint32_t. time at which the alarm event is triggered.

Definition at line 162 of file rtc.c.

References RTC_ALRH, RTC_ALRL, rtc_enter_config_mode(), and rtc_exit_config_mode().

Here is the call graph for this function:

◆ rtc_set_counter_val()

void rtc_set_counter_val ( uint32_t  counter_val)

RTC set the Counter.

Parameters
[in]counter_val32 bit time setting for the counter.

Definition at line 247 of file rtc.c.

References RTC_CNTH, RTC_CNTL, rtc_enter_config_mode(), and rtc_exit_config_mode().

Here is the call graph for this function:

◆ rtc_set_prescale_val()

void rtc_set_prescale_val ( uint32_t  prescale_val)

RTC Set the prescaler Value.

Parameters
[in]prescale_valuint32_t. 20 bit prescale divider.

Definition at line 200 of file rtc.c.

References rtc_enter_config_mode(), rtc_exit_config_mode(), RTC_PRLH, and RTC_PRLL.

Referenced by rtc_auto_awake().

Here is the call graph for this function:
Here is the caller graph for this function: