mirror of https://github.com/ARMmbed/mbed-os.git
				
				
				
			STM pin_function(), pin_mode(): return immediately when given pin is NC
Additionally, remove redundant pin checks against NC when above functions are used.pull/12460/head
							parent
							
								
									5aaf3b7479
								
							
						
					
					
						commit
						713be4fd77
					
				| 
						 | 
				
			
			@ -100,12 +100,8 @@ static void _can_init_freq_direct(can_t *obj, const can_pinmap_t *pinmap, int hz
 | 
			
		|||
    pin_function(pinmap->rd_pin, pinmap->rd_function);
 | 
			
		||||
    pin_function(pinmap->td_pin, pinmap->td_function);
 | 
			
		||||
    // Add pull-ups
 | 
			
		||||
    if (pinmap->rd_pin != NC) {
 | 
			
		||||
        pin_mode(pinmap->rd_pin, PullUp);
 | 
			
		||||
    }
 | 
			
		||||
    if (pinmap->td_pin != NC) {
 | 
			
		||||
        pin_mode(pinmap->td_pin, PullUp);
 | 
			
		||||
    }
 | 
			
		||||
    pin_mode(pinmap->rd_pin, PullUp);
 | 
			
		||||
    pin_mode(pinmap->td_pin, PullUp);
 | 
			
		||||
 | 
			
		||||
    // Default values
 | 
			
		||||
    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
 | 
			
		|||
    pin_function(pinmap->rd_pin, pinmap->rd_function);
 | 
			
		||||
    pin_function(pinmap->td_pin, pinmap->td_function);
 | 
			
		||||
    // Add pull-ups
 | 
			
		||||
    if (pinmap->rd_pin != NC) {
 | 
			
		||||
        pin_mode(pinmap->rd_pin, PullUp);
 | 
			
		||||
    }
 | 
			
		||||
    if (pinmap->td_pin != NC) {
 | 
			
		||||
        pin_mode(pinmap->td_pin, PullUp);
 | 
			
		||||
    }
 | 
			
		||||
    pin_mode(pinmap->rd_pin, PullUp);
 | 
			
		||||
    pin_mode(pinmap->td_pin, PullUp);
 | 
			
		||||
 | 
			
		||||
    /*  Use default values for rist init */
 | 
			
		||||
    obj->CanHandle.Instance = (CAN_TypeDef *)pinmap->peripheral;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -59,7 +59,9 @@ const uint32_t ll_pin_defines[16] = {
 | 
			
		|||
 */
 | 
			
		||||
void pin_function(PinName pin, int data)
 | 
			
		||||
{
 | 
			
		||||
    MBED_ASSERT(pin != (PinName)NC);
 | 
			
		||||
    if (pin == NC) {
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Get the pin informations
 | 
			
		||||
    uint32_t mode  = STM_PIN_FUNCTION(data);
 | 
			
		||||
| 
						 | 
				
			
			@ -163,7 +165,9 @@ void pin_function(PinName pin, int data)
 | 
			
		|||
 */
 | 
			
		||||
void pin_mode(PinName pin, PinMode mode)
 | 
			
		||||
{
 | 
			
		||||
    MBED_ASSERT(pin != (PinName)NC);
 | 
			
		||||
    if (pin == NC) {
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    uint32_t port_index = STM_PORT(pin);
 | 
			
		||||
    uint32_t ll_pin  = ll_pin_defines[STM_PIN(pin)];
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -157,14 +157,10 @@ static void _serial_init_direct(serial_t *obj, const serial_pinmap_t *pinmap)
 | 
			
		|||
    MBED_ASSERT(obj_s->index >= 0);
 | 
			
		||||
 | 
			
		||||
    // Configure UART pins
 | 
			
		||||
    if (pinmap->tx_pin != NC) {
 | 
			
		||||
        pin_function(pinmap->tx_pin, pinmap->tx_function);
 | 
			
		||||
        pin_mode(pinmap->tx_pin, PullUp);
 | 
			
		||||
    }
 | 
			
		||||
    if (pinmap->rx_pin != NC) {
 | 
			
		||||
        pin_function(pinmap->rx_pin, pinmap->rx_function);
 | 
			
		||||
        pin_mode(pinmap->rx_pin, PullUp);
 | 
			
		||||
    }
 | 
			
		||||
    pin_function(pinmap->tx_pin, pinmap->tx_function);
 | 
			
		||||
    pin_mode(pinmap->tx_pin, PullUp);
 | 
			
		||||
    pin_function(pinmap->rx_pin, pinmap->rx_function);
 | 
			
		||||
    pin_mode(pinmap->rx_pin, PullUp);
 | 
			
		||||
 | 
			
		||||
    // Configure UART
 | 
			
		||||
    obj_s->baudrate = 9600; // baudrate default value
 | 
			
		||||
| 
						 | 
				
			
			@ -355,13 +351,9 @@ void serial_free(serial_t *obj)
 | 
			
		|||
#endif /* DUAL_CORE */
 | 
			
		||||
 | 
			
		||||
    // Configure GPIOs
 | 
			
		||||
    if (obj_s->pin_tx != NC) {
 | 
			
		||||
        pin_function(obj_s->pin_tx, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
 | 
			
		||||
    }
 | 
			
		||||
    pin_function(obj_s->pin_tx, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
 | 
			
		||||
 | 
			
		||||
    if (obj_s->pin_rx != NC) {
 | 
			
		||||
        pin_function(obj_s->pin_rx, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
 | 
			
		||||
    }
 | 
			
		||||
    pin_function(obj_s->pin_rx, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
 | 
			
		||||
 | 
			
		||||
    serial_irq_ids[obj_s->index] = 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -218,14 +218,12 @@ static void _spi_init_direct(spi_t *obj, const spi_pinmap_t *pinmap)
 | 
			
		|||
#endif
 | 
			
		||||
 | 
			
		||||
    // Configure the SPI pins
 | 
			
		||||
    if (pinmap->mosi_pin != NC) {
 | 
			
		||||
        pin_function(pinmap->mosi_pin, pinmap->mosi_function);
 | 
			
		||||
        pin_mode(pinmap->mosi_pin, PullNone);
 | 
			
		||||
    }
 | 
			
		||||
    if (pinmap->miso_pin != NC) {
 | 
			
		||||
        pin_function(pinmap->miso_pin, pinmap->miso_function);
 | 
			
		||||
        pin_mode(pinmap->miso_pin, PullNone);
 | 
			
		||||
    }
 | 
			
		||||
    pin_function(pinmap->mosi_pin, pinmap->mosi_function);
 | 
			
		||||
    pin_mode(pinmap->mosi_pin, PullNone);
 | 
			
		||||
 | 
			
		||||
    pin_function(pinmap->miso_pin, pinmap->miso_function);
 | 
			
		||||
    pin_mode(pinmap->miso_pin, PullNone);
 | 
			
		||||
 | 
			
		||||
    pin_function(pinmap->sclk_pin, pinmap->sclk_function);
 | 
			
		||||
    pin_mode(pinmap->sclk_pin, PullNone);
 | 
			
		||||
    spiobj->pin_miso = pinmap->miso_pin;
 | 
			
		||||
| 
						 | 
				
			
			@ -370,12 +368,8 @@ void spi_free(spi_t *obj)
 | 
			
		|||
    LL_HSEM_ReleaseLock(HSEM, CFG_HW_RCC_SEMID, HSEM_CR_COREID_CURRENT);
 | 
			
		||||
#endif /* DUAL_CORE */
 | 
			
		||||
    // Configure GPIOs
 | 
			
		||||
    if (spiobj->pin_miso != NC) {
 | 
			
		||||
        pin_function(spiobj->pin_miso, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
 | 
			
		||||
    }
 | 
			
		||||
    if (spiobj->pin_mosi != NC) {
 | 
			
		||||
        pin_function(spiobj->pin_mosi, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
 | 
			
		||||
    }
 | 
			
		||||
    pin_function(spiobj->pin_miso, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
 | 
			
		||||
    pin_function(spiobj->pin_mosi, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
 | 
			
		||||
    pin_function(spiobj->pin_sclk, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
 | 
			
		||||
    if (handle->Init.NSS != SPI_NSS_SOFT) {
 | 
			
		||||
        pin_function(spiobj->pin_ssel, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue