Skip to content

Commit 713be4f

Browse files
committed
STM pin_function(), pin_mode(): return immediately when given pin is NC
Additionally, remove redundant pin checks against NC when above functions are used.
1 parent 5aaf3b7 commit 713be4f

File tree

4 files changed

+24
-42
lines changed

4 files changed

+24
-42
lines changed

targets/TARGET_STM/can_api.c

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -100,12 +100,8 @@ static void _can_init_freq_direct(can_t *obj, const can_pinmap_t *pinmap, int hz
100100
pin_function(pinmap->rd_pin, pinmap->rd_function);
101101
pin_function(pinmap->td_pin, pinmap->td_function);
102102
// Add pull-ups
103-
if (pinmap->rd_pin != NC) {
104-
pin_mode(pinmap->rd_pin, PullUp);
105-
}
106-
if (pinmap->td_pin != NC) {
107-
pin_mode(pinmap->td_pin, PullUp);
108-
}
103+
pin_mode(pinmap->rd_pin, PullUp);
104+
pin_mode(pinmap->td_pin, PullUp);
109105

110106
// Default values
111107
obj->CanHandle.Instance = (FDCAN_GlobalTypeDef *)pinmap->peripheral;
@@ -599,12 +595,8 @@ static void _can_init_freq_direct(can_t *obj, const can_pinmap_t *pinmap, int hz
599595
pin_function(pinmap->rd_pin, pinmap->rd_function);
600596
pin_function(pinmap->td_pin, pinmap->td_function);
601597
// Add pull-ups
602-
if (pinmap->rd_pin != NC) {
603-
pin_mode(pinmap->rd_pin, PullUp);
604-
}
605-
if (pinmap->td_pin != NC) {
606-
pin_mode(pinmap->td_pin, PullUp);
607-
}
598+
pin_mode(pinmap->rd_pin, PullUp);
599+
pin_mode(pinmap->td_pin, PullUp);
608600

609601
/* Use default values for rist init */
610602
obj->CanHandle.Instance = (CAN_TypeDef *)pinmap->peripheral;

targets/TARGET_STM/pinmap.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,9 @@ const uint32_t ll_pin_defines[16] = {
5959
*/
6060
void pin_function(PinName pin, int data)
6161
{
62-
MBED_ASSERT(pin != (PinName)NC);
62+
if (pin == NC) {
63+
return;
64+
}
6365

6466
// Get the pin informations
6567
uint32_t mode = STM_PIN_FUNCTION(data);
@@ -163,7 +165,9 @@ void pin_function(PinName pin, int data)
163165
*/
164166
void pin_mode(PinName pin, PinMode mode)
165167
{
166-
MBED_ASSERT(pin != (PinName)NC);
168+
if (pin == NC) {
169+
return;
170+
}
167171

168172
uint32_t port_index = STM_PORT(pin);
169173
uint32_t ll_pin = ll_pin_defines[STM_PIN(pin)];

targets/TARGET_STM/serial_api.c

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -157,14 +157,10 @@ static void _serial_init_direct(serial_t *obj, const serial_pinmap_t *pinmap)
157157
MBED_ASSERT(obj_s->index >= 0);
158158

159159
// Configure UART pins
160-
if (pinmap->tx_pin != NC) {
161-
pin_function(pinmap->tx_pin, pinmap->tx_function);
162-
pin_mode(pinmap->tx_pin, PullUp);
163-
}
164-
if (pinmap->rx_pin != NC) {
165-
pin_function(pinmap->rx_pin, pinmap->rx_function);
166-
pin_mode(pinmap->rx_pin, PullUp);
167-
}
160+
pin_function(pinmap->tx_pin, pinmap->tx_function);
161+
pin_mode(pinmap->tx_pin, PullUp);
162+
pin_function(pinmap->rx_pin, pinmap->rx_function);
163+
pin_mode(pinmap->rx_pin, PullUp);
168164

169165
// Configure UART
170166
obj_s->baudrate = 9600; // baudrate default value
@@ -355,13 +351,9 @@ void serial_free(serial_t *obj)
355351
#endif /* DUAL_CORE */
356352

357353
// Configure GPIOs
358-
if (obj_s->pin_tx != NC) {
359-
pin_function(obj_s->pin_tx, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
360-
}
354+
pin_function(obj_s->pin_tx, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
361355

362-
if (obj_s->pin_rx != NC) {
363-
pin_function(obj_s->pin_rx, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
364-
}
356+
pin_function(obj_s->pin_rx, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
365357

366358
serial_irq_ids[obj_s->index] = 0;
367359
}

targets/TARGET_STM/stm_spi_api.c

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -218,14 +218,12 @@ static void _spi_init_direct(spi_t *obj, const spi_pinmap_t *pinmap)
218218
#endif
219219

220220
// Configure the SPI pins
221-
if (pinmap->mosi_pin != NC) {
222-
pin_function(pinmap->mosi_pin, pinmap->mosi_function);
223-
pin_mode(pinmap->mosi_pin, PullNone);
224-
}
225-
if (pinmap->miso_pin != NC) {
226-
pin_function(pinmap->miso_pin, pinmap->miso_function);
227-
pin_mode(pinmap->miso_pin, PullNone);
228-
}
221+
pin_function(pinmap->mosi_pin, pinmap->mosi_function);
222+
pin_mode(pinmap->mosi_pin, PullNone);
223+
224+
pin_function(pinmap->miso_pin, pinmap->miso_function);
225+
pin_mode(pinmap->miso_pin, PullNone);
226+
229227
pin_function(pinmap->sclk_pin, pinmap->sclk_function);
230228
pin_mode(pinmap->sclk_pin, PullNone);
231229
spiobj->pin_miso = pinmap->miso_pin;
@@ -370,12 +368,8 @@ void spi_free(spi_t *obj)
370368
LL_HSEM_ReleaseLock(HSEM, CFG_HW_RCC_SEMID, HSEM_CR_COREID_CURRENT);
371369
#endif /* DUAL_CORE */
372370
// Configure GPIOs
373-
if (spiobj->pin_miso != NC) {
374-
pin_function(spiobj->pin_miso, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
375-
}
376-
if (spiobj->pin_mosi != NC) {
377-
pin_function(spiobj->pin_mosi, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
378-
}
371+
pin_function(spiobj->pin_miso, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
372+
pin_function(spiobj->pin_mosi, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
379373
pin_function(spiobj->pin_sclk, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
380374
if (handle->Init.NSS != SPI_NSS_SOFT) {
381375
pin_function(spiobj->pin_ssel, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));

0 commit comments

Comments
 (0)