summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoriabdalkader <i.abdalkader@gmail.com>2018-02-23 02:50:21 +0200
committerDamien George <damien.p.george@gmail.com>2018-03-09 15:10:10 +1100
commit3f86fbcb079f21805e5988610d13ebed0b3b884c (patch)
tree188ec8710d1882fa65fdcc9188a12c4e67146e46
parent2e93d4167d6f923e9bb8ffc59478c225e756ecf2 (diff)
stm32/mphalport: Use GPIO BSRRL/BSRRH registers for H7 MCUs.
-rw-r--r--ports/stm32/mphalport.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/ports/stm32/mphalport.h b/ports/stm32/mphalport.h
index b0387e644..c3d280b40 100644
--- a/ports/stm32/mphalport.h
+++ b/ports/stm32/mphalport.h
@@ -45,8 +45,13 @@ static inline mp_uint_t mp_hal_ticks_cpu(void) {
#define mp_hal_pin_input(p) mp_hal_pin_config((p), MP_HAL_PIN_MODE_INPUT, MP_HAL_PIN_PULL_NONE, 0)
#define mp_hal_pin_output(p) mp_hal_pin_config((p), MP_HAL_PIN_MODE_OUTPUT, MP_HAL_PIN_PULL_NONE, 0)
#define mp_hal_pin_open_drain(p) mp_hal_pin_config((p), MP_HAL_PIN_MODE_OPEN_DRAIN, MP_HAL_PIN_PULL_NONE, 0)
+#if defined(STM32H7)
+#define mp_hal_pin_high(p) (((p)->gpio->BSRRL) = (p)->pin_mask)
+#define mp_hal_pin_low(p) (((p)->gpio->BSRRH) = (p)->pin_mask)
+#else
#define mp_hal_pin_high(p) (((p)->gpio->BSRR) = (p)->pin_mask)
#define mp_hal_pin_low(p) (((p)->gpio->BSRR) = ((p)->pin_mask << 16))
+#endif
#define mp_hal_pin_od_low(p) mp_hal_pin_low(p)
#define mp_hal_pin_od_high(p) mp_hal_pin_high(p)
#define mp_hal_pin_read(p) (((p)->gpio->IDR >> (p)->pin) & 1)