Skip to content

Commit 057e7e7

Browse files
committed
chore: use LL GPIO pull configuration
Signed-off-by: Frederic Pillon <frederic.pillon@st.com>
1 parent 973c5ef commit 057e7e7

File tree

8 files changed

+33
-42
lines changed

8 files changed

+33
-42
lines changed

cores/arduino/Tone.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ static void timerTonePinDeinit()
6969
TimerTone->timerHandleDeinit();
7070
}
7171
if (TimerTone_pinInfo.pin != NC) {
72-
pin_function(TimerTone_pinInfo.pin, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
72+
pin_function(TimerTone_pinInfo.pin, STM_PIN_DATA(STM_MODE_INPUT, LL_GPIO_PULL_NO, 0));
7373
TimerTone_pinInfo.pin = NC;
7474
}
7575
}
@@ -93,7 +93,7 @@ static void timerTonePinInit(PinName p, uint32_t frequency, uint32_t duration)
9393
TimerTone_pinInfo.count = -1;
9494
}
9595

96-
pin_function(TimerTone_pinInfo.pin, STM_PIN_DATA(STM_MODE_OUTPUT_PP, GPIO_NOPULL, 0));
96+
pin_function(TimerTone_pinInfo.pin, STM_PIN_DATA(STM_MODE_OUTPUT_PP, LL_GPIO_PULL_NO, 0));
9797

9898
TimerTone->setOverflow(timFreq, HERTZ_FORMAT);
9999
TimerTone->attachInterrupt(tonePeriodElapsedCallback);

cores/arduino/wiring_digital.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,22 +52,22 @@ void pinMode(uint32_t ulPin, uint32_t ulMode)
5252
#endif
5353
switch (ulMode) {
5454
case INPUT: /* INPUT_FLOATING */
55-
pin_function(p, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
55+
pin_function(p, STM_PIN_DATA(STM_MODE_INPUT, LL_GPIO_PULL_NO, 0));
5656
break;
5757
case INPUT_PULLUP:
58-
pin_function(p, STM_PIN_DATA(STM_MODE_INPUT, GPIO_PULLUP, 0));
58+
pin_function(p, STM_PIN_DATA(STM_MODE_INPUT, LL_GPIO_PULL_UP, 0));
5959
break;
6060
case INPUT_PULLDOWN:
61-
pin_function(p, STM_PIN_DATA(STM_MODE_INPUT, GPIO_PULLDOWN, 0));
61+
pin_function(p, STM_PIN_DATA(STM_MODE_INPUT, LL_GPIO_PULL_DOWN, 0));
6262
break;
6363
case INPUT_ANALOG:
64-
pin_function(p, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
64+
pin_function(p, STM_PIN_DATA(STM_MODE_ANALOG, LL_GPIO_PULL_NO, 0));
6565
break;
6666
case OUTPUT:
67-
pin_function(p, STM_PIN_DATA(STM_MODE_OUTPUT_PP, GPIO_NOPULL, 0));
67+
pin_function(p, STM_PIN_DATA(STM_MODE_OUTPUT_PP, LL_GPIO_PULL_NO, 0));
6868
break;
6969
case OUTPUT_OPEN_DRAIN:
70-
pin_function(p, STM_PIN_DATA(STM_MODE_OUTPUT_OD, GPIO_NOPULL, 0));
70+
pin_function(p, STM_PIN_DATA(STM_MODE_OUTPUT_OD, LL_GPIO_PULL_NO, 0));
7171
break;
7272
default:
7373
Error_Handler();

libraries/SPI/src/utility/spi_com.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,7 @@ void spi_init(spi_t *obj, uint32_t speed, SPIMode mode, uint8_t msb, SPIDeviceMo
334334
* According the STM32 Datasheet for SPI peripheral we need to PULLDOWN
335335
* or PULLUP the SCK pin according the polarity used.
336336
*/
337-
pull = (handle->Init.CLKPolarity == SPI_POLARITY_LOW) ? GPIO_PULLDOWN : GPIO_PULLUP;
337+
pull = (handle->Init.CLKPolarity == SPI_POLARITY_LOW) ? LL_GPIO_PULL_DOWN : LL_GPIO_PULL_UP;
338338
pin_PullConfig(get_GPIO_Port(STM_PORT(obj->pin_sclk)), STM_LL_GPIO_PIN(obj->pin_sclk), pull);
339339
pinmap_pinout(obj->pin_ssel, PinMap_SPI_SSEL);
340340
#if defined(SUBGHZSPI_BASE)

libraries/SrcWrapper/inc/PinAF_STM32F1.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@
3737
extern "C" {
3838
#endif
3939

40+
/* Stub for STM32F1xx */
41+
#define LL_GPIO_PULL_NO 0x00000002u
42+
4043
enum {
4144
AFIO_NONE,
4245
AFIO_SPI1_ENABLE,

libraries/SrcWrapper/inc/pinconfig.h

Lines changed: 15 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -32,37 +32,23 @@ static inline void pin_PullConfig(GPIO_TypeDef *gpio, uint32_t ll_pin, uint32_t
3232
{
3333
#ifdef STM32F1xx
3434
uint32_t function = LL_GPIO_GetPinMode(gpio, ll_pin);
35-
#endif
36-
hsem_lock(CFG_HW_GPIO_SEMID, HSEM_LOCK_DEFAULT_RETRY);
37-
switch (pull_config) {
38-
case GPIO_PULLUP:
39-
#ifdef STM32F1xx
40-
if (function == LL_GPIO_MODE_FLOATING) {
41-
LL_GPIO_SetPinMode(gpio, ll_pin, LL_GPIO_MODE_INPUT);
42-
}
43-
#endif
44-
LL_GPIO_SetPinPull(gpio, ll_pin, LL_GPIO_PULL_UP);
45-
break;
46-
case GPIO_PULLDOWN:
47-
#ifdef STM32F1xx
48-
if (function == LL_GPIO_MODE_FLOATING) {
49-
LL_GPIO_SetPinMode(gpio, ll_pin, LL_GPIO_MODE_INPUT);
50-
}
51-
#endif
52-
LL_GPIO_SetPinPull(gpio, ll_pin, LL_GPIO_PULL_DOWN);
53-
break;
54-
default:
55-
#ifdef STM32F1xx
56-
/* Input+NoPull = Floating for F1 family */
57-
if (function == LL_GPIO_MODE_INPUT) {
58-
LL_GPIO_SetPinMode(gpio, ll_pin, LL_GPIO_MODE_FLOATING);
59-
}
60-
#else
61-
LL_GPIO_SetPinPull(gpio, ll_pin, LL_GPIO_PULL_NO);
62-
#endif
63-
break;
35+
if (pull_config == LL_GPIO_PULL_NO) {
36+
/* Input+NoPull = Floating for F1 family */
37+
if (function == LL_GPIO_MODE_INPUT) {
38+
LL_GPIO_SetPinMode(gpio, ll_pin, LL_GPIO_MODE_FLOATING);
39+
}
40+
} else {
41+
/* Input+PullUp/PullDown = Input for F1 family */
42+
if (function == LL_GPIO_MODE_FLOATING) {
43+
LL_GPIO_SetPinMode(gpio, ll_pin, LL_GPIO_MODE_INPUT);
44+
}
45+
LL_GPIO_SetPinPull(gpio, ll_pin, pull_config);
6446
}
47+
#else
48+
hsem_lock(CFG_HW_GPIO_SEMID, HSEM_LOCK_DEFAULT_RETRY);
49+
LL_GPIO_SetPinPull(gpio, ll_pin, pull_config);
6550
hsem_unlock(CFG_HW_GPIO_SEMID);
51+
#endif
6652
}
6753

6854
static inline void pin_SetAFPin(GPIO_TypeDef *gpio, PinName pin, uint32_t afnum)

libraries/USBDevice/src/usbd_if.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ WEAK void USBD_reenumerate(void)
131131
{
132132
#if defined(USBD_PULLUP_CONTROL_PINNAME)
133133
/* Detach */
134-
pin_function(USBD_PULLUP_CONTROL_PINNAME, STM_PIN_DATA(STM_MODE_OUTPUT_PP, GPIO_NOPULL, 0));
134+
pin_function(USBD_PULLUP_CONTROL_PINNAME, STM_PIN_DATA(STM_MODE_OUTPUT_PP, LL_GPIO_PULL_NO, 0));
135135
digitalWriteFast(USBD_PULLUP_CONTROL_PINNAME, USBD_DETACH_LEVEL);
136136

137137
/* Wait */
@@ -140,7 +140,7 @@ WEAK void USBD_reenumerate(void)
140140
/* Attach */
141141
#if defined(USBD_DP_TRICK)
142142
/* Revert back to input (floating), needed for the D+ trick */
143-
pin_function(USBD_PULLUP_CONTROL_PINNAME, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
143+
pin_function(USBD_PULLUP_CONTROL_PINNAME, STM_PIN_DATA(STM_MODE_INPUT, LL_GPIO_PULL_NO, 0));
144144
#else
145145
digitalWriteFast(USBD_PULLUP_CONTROL_PINNAME, USBD_ATTACH_LEVEL);
146146
#endif /* defined(USBD_PULLUP_CONTROL_FLOATING) */

libraries/Wire/src/utility/twi.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
#include "core_debug.h"
3939
#include "utility/twi.h"
4040
#include "PinAF_STM32F1.h"
41+
#include "stm32yyxx_ll_gpio.h"
4142

4243
#ifdef __cplusplus
4344
extern "C" {
@@ -892,8 +893,8 @@ void i2c_deinit(i2c_t *obj)
892893
#endif /* !STM32C0xx && !STM32F0xx && !STM32G0xx && !STM32L0xx && !STM32U0xx */
893894
HAL_I2C_DeInit(&(obj->handle));
894895
/* Reset I2C GPIO pins as INPUT_ANALOG */
895-
pin_function(obj->scl, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
896-
pin_function(obj->sda, STM_PIN_DATA(STM_MODE_ANALOG, GPIO_NOPULL, 0));
896+
pin_function(obj->scl, STM_PIN_DATA(STM_MODE_ANALOG, LL_GPIO_PULL_NO, 0));
897+
pin_function(obj->sda, STM_PIN_DATA(STM_MODE_ANALOG, LL_GPIO_PULL_NO, 0));
897898
// Reset I2Cx and disable clock
898899
#if defined I2C1_BASE
899900
if (obj->i2c == I2C1) {

variants/STM32WL3x/WL33C(8-B-C)Vx(X)/variant_NUCLEO_WL33CCx.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#if defined(ARDUINO_NUCLEO_WL33CC1) || defined(ARDUINO_NUCLEO_WL33CC2)
1414
#include "pins_arduino.h"
1515
#include "pinmap.h"
16+
#include "stm32yyxx_ll_gpio.h"
1617

1718
// Digital PinName array
1819
const PinName digitalPin[] = {

0 commit comments

Comments
 (0)