Merge pull request #14779 from fjmolinas/pr_stm32f1_rtt_fixes

cpu/stm32/f1/rtt: fixes and improvements
This commit is contained in:
benpicco 2020-08-18 16:07:00 +02:00 committed by GitHub
commit 04df2bbd8a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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);
if (alarm_cb) {
alarm_cb(alarm_arg); 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);
if (overflow_cb) {
overflow_cb(overflow_arg); overflow_cb(overflow_arg);
} }
}
cortexm_isr_end(); cortexm_isr_end();
} }