projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altos: Use pyro voltage to check igniters
[fw/altos]
/
src
/
stmf0
/
ao_beep_stm.c
diff --git
a/src/stmf0/ao_beep_stm.c
b/src/stmf0/ao_beep_stm.c
index 84ccd93e9cca27578be67ad13ba4d0b4ef57e345..751e611aae3a45e5150cce85af5dc387ada5ebbf 100644
(file)
--- a/
src/stmf0/ao_beep_stm.c
+++ b/
src/stmf0/ao_beep_stm.c
@@
-25,6
+25,10
@@
#define BEEPER_TIMER 1
#endif
#define BEEPER_TIMER 1
#endif
+#ifndef BEEPER_AFR
+#define BEEPER_AFR STM_AFR_AF2
+#endif
+
#if BEEPER_TIMER == 1
#define timer stm_tim1
#define STM_RCC_TIMER STM_RCC_APB2ENR_TIM1EN
#if BEEPER_TIMER == 1
#define timer stm_tim1
#define STM_RCC_TIMER STM_RCC_APB2ENR_TIM1EN
@@
-54,7
+58,10
@@
disable(void)
#if BEEPER_TIMER == 1
timer.bdtr = 0;
#endif
#if BEEPER_TIMER == 1
timer.bdtr = 0;
#endif
- stm_rcc_enr &= ~(1 << STM_RCC_TIMER);
+ stm_rcc_enr &= ~(1UL << STM_RCC_TIMER);
+
+ /* Disconnect the timer from the pin */
+ stm_afr_set(BEEPER_PORT, BEEPER_PIN, STM_AFR_NONE);
}
void
}
void
@@
-361,12
+368,15
@@
ao_beep(uint8_t beep)
/* Update the values */
timer.egr = (1 << STM_TIM23_EGR_UG);
/* Update the values */
timer.egr = (1 << STM_TIM23_EGR_UG);
+
+ /* Hook the timer up to the beeper pin */
+ stm_afr_set(BEEPER_PORT, BEEPER_PIN, BEEPER_AFR);
#endif
}
}
void
#endif
}
}
void
-ao_beep_for(uint8_t beep,
uint16_t ticks) __reentrant
+ao_beep_for(uint8_t beep,
AO_TICK_TYPE ticks)
{
ao_beep(beep);
ao_delay(ticks);
{
ao_beep(beep);
ao_delay(ticks);
@@
-376,9
+386,8
@@
ao_beep_for(uint8_t beep, uint16_t ticks) __reentrant
void
ao_beep_init(void)
{
void
ao_beep_init(void)
{
- ao_enable_port(BEEPER_PORT);
- stm_afr_set(BEEPER_PORT, BEEPER_PIN, STM_AFR_AF2);
+ ao_enable_output(BEEPER_PORT, BEEPER_PIN, 0);
/* Leave the timer off until requested */
/* Leave the timer off until requested */
- stm_rcc_enr &= ~(1 << STM_RCC_TIMER);
+ stm_rcc_enr &= ~(1
UL
<< STM_RCC_TIMER);
}
}