From 3f86fbcb079f21805e5988610d13ebed0b3b884c Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Fri, 23 Feb 2018 02:50:21 +0200 Subject: [PATCH] stm32/mphalport: Use GPIO BSRRL/BSRRH registers for H7 MCUs. --- ports/stm32/mphalport.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ports/stm32/mphalport.h b/ports/stm32/mphalport.h index b0387e6447..c3d280b408 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)