Merge pull request #14779 from fjmolinas/pr_stm32f1_rtt_fixes
cpu/stm32/f1/rtt: fixes and improvements
This commit is contained in:
commit
04df2bbd8a
@ -123,6 +123,12 @@ void rtt_set_alarm(uint32_t alarm, rtt_cb_t cb, void *arg)
|
|||||||
{
|
{
|
||||||
_rtt_enter_config_mode();
|
_rtt_enter_config_mode();
|
||||||
|
|
||||||
|
/* Disable alarm*/
|
||||||
|
RTT_DEV->CRH &= ~RTC_CRH_ALRIE;
|
||||||
|
/* Save new cb and argument */
|
||||||
|
alarm_cb = cb;
|
||||||
|
alarm_arg = arg;
|
||||||
|
|
||||||
/* Set the alarm MSB word */
|
/* Set the alarm MSB word */
|
||||||
RTT_DEV->ALRH = alarm >> 16;
|
RTT_DEV->ALRH = alarm >> 16;
|
||||||
/* Set the alarm LSB word */
|
/* Set the alarm LSB word */
|
||||||
@ -132,9 +138,6 @@ void rtt_set_alarm(uint32_t alarm, rtt_cb_t cb, void *arg)
|
|||||||
RTT_DEV->CRH |= RTC_CRH_ALRIE;
|
RTT_DEV->CRH |= RTC_CRH_ALRIE;
|
||||||
|
|
||||||
_rtt_leave_config_mode();
|
_rtt_leave_config_mode();
|
||||||
|
|
||||||
alarm_cb = cb;
|
|
||||||
alarm_arg = arg;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void rtt_clear_alarm(void)
|
void rtt_clear_alarm(void)
|
||||||
@ -189,11 +192,15 @@ void RTT_ISR(void)
|
|||||||
{
|
{
|
||||||
if (RTT_DEV->CRL & RTC_CRL_ALRF) {
|
if (RTT_DEV->CRL & RTC_CRL_ALRF) {
|
||||||
RTT_DEV->CRL &= ~(RTC_CRL_ALRF);
|
RTT_DEV->CRL &= ~(RTC_CRL_ALRF);
|
||||||
alarm_cb(alarm_arg);
|
if (alarm_cb) {
|
||||||
|
alarm_cb(alarm_arg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (RTT_DEV->CRL & RTC_CRL_OWF) {
|
if (RTT_DEV->CRL & RTC_CRL_OWF) {
|
||||||
RTT_DEV->CRL &= ~(RTC_CRL_OWF);
|
RTT_DEV->CRL &= ~(RTC_CRL_OWF);
|
||||||
overflow_cb(overflow_arg);
|
if (overflow_cb) {
|
||||||
|
overflow_cb(overflow_arg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
cortexm_isr_end();
|
cortexm_isr_end();
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user