summaryrefslogtreecommitdiff
path: root/src/stm/stm32l.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/stm/stm32l.h')
-rw-r--r--src/stm/stm32l.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/stm/stm32l.h b/src/stm/stm32l.h
index a20efa8a..4f966e3e 100644
--- a/src/stm/stm32l.h
+++ b/src/stm/stm32l.h
@@ -168,6 +168,12 @@ stm_gpio_set(struct stm_gpio *gpio, int pin, uint8_t value) {
}
static inline void
+stm_gpio_set_mask(struct stm_gpio *gpio, uint16_t bits, uint16_t mask) {
+ /* Use the bit set/reset register to do this atomically */
+ gpio->bsrr = ((uint32_t) (~bits & mask) << 16) | ((uint32_t) (bits & mask));
+}
+
+static inline void
stm_gpio_set_bits(struct stm_gpio *gpio, uint16_t bits) {
gpio->bsrr = bits;
}