aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--os/hal/ports/STM32/LLD/GPIOv2/hal_pal_lld.c2
-rw-r--r--os/hal/ports/STM32/LLD/GPIOv3/hal_pal_lld.c2
-rw-r--r--readme.txt2
3 files changed, 4 insertions, 2 deletions
diff --git a/os/hal/ports/STM32/LLD/GPIOv2/hal_pal_lld.c b/os/hal/ports/STM32/LLD/GPIOv2/hal_pal_lld.c
index b3ca69b8f..7cd343f51 100644
--- a/os/hal/ports/STM32/LLD/GPIOv2/hal_pal_lld.c
+++ b/os/hal/ports/STM32/LLD/GPIOv2/hal_pal_lld.c
@@ -177,7 +177,7 @@ void _pal_lld_setgroupmode(ioportid_t port,
port->OTYPER = (port->OTYPER & ~m1) | otyper;
port->OSPEEDR = (port->OSPEEDR & ~m2) | ospeedr;
port->PUPDR = (port->PUPDR & ~m2) | pupdr;
- if (moder == PAL_STM32_MODE_ALTERNATE) {
+ if ((mode & PAL_STM32_MODE_MASK) == PAL_STM32_MODE_ALTERNATE) {
/* If going in alternate mode then the alternate number is set
before switching mode in order to avoid glitches.*/
if (bit < 8)
diff --git a/os/hal/ports/STM32/LLD/GPIOv3/hal_pal_lld.c b/os/hal/ports/STM32/LLD/GPIOv3/hal_pal_lld.c
index 7b85fe45f..e55c0c697 100644
--- a/os/hal/ports/STM32/LLD/GPIOv3/hal_pal_lld.c
+++ b/os/hal/ports/STM32/LLD/GPIOv3/hal_pal_lld.c
@@ -163,7 +163,7 @@ void _pal_lld_setgroupmode(ioportid_t port,
port->ASCR = (port->ASCR & ~m1) | ascr;
port->OSPEEDR = (port->OSPEEDR & ~m2) | ospeedr;
port->PUPDR = (port->PUPDR & ~m2) | pupdr;
- if (moder == PAL_STM32_MODE_ALTERNATE) {
+ if ((mode & PAL_STM32_MODE_MASK) == PAL_STM32_MODE_ALTERNATE) {
/* If going in alternate mode then the alternate number is set
before switching mode in order to avoid glitches.*/
if (bit < 8)
diff --git a/readme.txt b/readme.txt
index 18488a711..dcb5f1a72 100644
--- a/readme.txt
+++ b/readme.txt
@@ -153,6 +153,8 @@
- RT: Merged RT4.
- NIL: Merged NIL2.
- NIL: Added STM32F7 demo.
+- HAL: Fixed setting alternate mode in STM32 GPIOv3 and GPIOv3 drivers can fail
+ (bug #813)(backported to 16.1.7).
- HAL: Fixed incorrect handling of shared ISRs in STM32 DMAv1 driver
(bug #812)(backported to 16.1.7).
- HAL: Fixed protocol violation in usbDisableEndpointsI() API (bug #811)