Skip to content

Commit 81bc8a0

Browse files
committed
Call pinmap_function() only once
Signed-off-by: Frederic.Pillon <[email protected]>
1 parent dafc4fa commit 81bc8a0

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

cores/arduino/stm32/uart.c

+11-8
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ void uart_init(serial_t *obj)
9797
UART_HandleTypeDef *huart = &(obj->handle);
9898
GPIO_InitTypeDef GPIO_InitStruct;
9999
GPIO_TypeDef *port;
100+
uint32_t function = (uint32_t)NC;
100101

101102
// Determine the UART to use (UART_1, UART_2, ...)
102103
USART_TypeDef *uart_tx = pinmap_peripheral(obj->pin_tx, PinMap_UART_TX);
@@ -238,27 +239,29 @@ void uart_init(serial_t *obj)
238239
//Configure GPIOs
239240
//RX
240241
port = set_GPIO_Port_Clock(STM_PORT(obj->pin_rx));
242+
function = pinmap_function(obj->pin_rx, PinMap_UART_RX);
241243
GPIO_InitStruct.Pin = STM_GPIO_PIN(obj->pin_rx);
242-
GPIO_InitStruct.Mode = STM_PIN_MODE(pinmap_function(obj->pin_rx,PinMap_UART_RX));
244+
GPIO_InitStruct.Mode = STM_PIN_MODE(function);
243245
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
244-
GPIO_InitStruct.Pull = STM_PIN_PUPD(pinmap_function(obj->pin_rx,PinMap_UART_RX));
246+
GPIO_InitStruct.Pull = STM_PIN_PUPD(function);
245247
#ifdef STM32F1xx
246-
pin_SetF1AFPin(STM_PIN_AFNUM(pinmap_function(obj->pin_rx,PinMap_UART_RX)));
248+
pin_SetF1AFPin(STM_PIN_AFNUM(function);
247249
#else
248-
GPIO_InitStruct.Alternate = STM_PIN_AFNUM(pinmap_function(obj->pin_rx,PinMap_UART_RX));
250+
GPIO_InitStruct.Alternate = STM_PIN_AFNUM(function);
249251
#endif /* STM32F1xx */
250252
HAL_GPIO_Init(port, &GPIO_InitStruct);
251253

252254
//TX
253255
port = set_GPIO_Port_Clock(STM_PORT(obj->pin_tx));
256+
function = pinmap_function(obj->pin_tx, PinMap_UART_TX);
254257
GPIO_InitStruct.Pin = STM_GPIO_PIN(obj->pin_tx);
255-
GPIO_InitStruct.Mode = STM_PIN_MODE(pinmap_function(obj->pin_tx,PinMap_UART_TX));
258+
GPIO_InitStruct.Mode = STM_PIN_MODE(function);
256259
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
257-
GPIO_InitStruct.Pull = STM_PIN_PUPD(pinmap_function(obj->pin_tx,PinMap_UART_TX));
260+
GPIO_InitStruct.Pull = STM_PIN_PUPD(function);
258261
#ifdef STM32F1xx
259-
pin_SetF1AFPin(STM_PIN_AFNUM(pinmap_function(obj->pin_tx,PinMap_UART_TX)));
262+
pin_SetF1AFPin(STM_PIN_AFNUM(function);
260263
#else
261-
GPIO_InitStruct.Alternate = STM_PIN_AFNUM(pinmap_function(obj->pin_tx,PinMap_UART_TX));
264+
GPIO_InitStruct.Alternate = STM_PIN_AFNUM(function);
262265
#endif /* STM32F1xx */
263266
HAL_GPIO_Init(port, &GPIO_InitStruct);
264267

0 commit comments

Comments
 (0)