stm32/periph/spi : Add check for GPIO_UNDEF
This commit is contained in:
parent
ccfd3ee980
commit
d3aa6ca00b
@ -130,16 +130,33 @@ void spi_init(spi_t bus)
|
|||||||
void spi_init_pins(spi_t bus)
|
void spi_init_pins(spi_t bus)
|
||||||
{
|
{
|
||||||
#ifdef CPU_FAM_STM32F1
|
#ifdef CPU_FAM_STM32F1
|
||||||
gpio_init_af(spi_config[bus].sclk_pin, GPIO_AF_OUT_PP);
|
|
||||||
gpio_init_af(spi_config[bus].mosi_pin, GPIO_AF_OUT_PP);
|
if (gpio_is_valid(spi_config[bus].sclk_pin)) {
|
||||||
gpio_init(spi_config[bus].miso_pin, GPIO_IN);
|
gpio_init_af(spi_config[bus].sclk_pin, GPIO_AF_OUT_PP);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gpio_is_valid(spi_config[bus].mosi_pin)) {
|
||||||
|
gpio_init_af(spi_config[bus].mosi_pin, GPIO_AF_OUT_PP);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gpio_is_valid(spi_config[bus].miso_pin)) {
|
||||||
|
gpio_init(spi_config[bus].miso_pin, GPIO_IN);
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
gpio_init(spi_config[bus].mosi_pin, GPIO_OUT);
|
if (gpio_is_valid(spi_config[bus].mosi_pin)) {
|
||||||
gpio_init(spi_config[bus].miso_pin, GPIO_IN);
|
gpio_init(spi_config[bus].mosi_pin, GPIO_OUT);
|
||||||
gpio_init(spi_config[bus].sclk_pin, GPIO_OUT);
|
gpio_init_af(spi_config[bus].mosi_pin, spi_config[bus].mosi_af);
|
||||||
gpio_init_af(spi_config[bus].mosi_pin, spi_config[bus].mosi_af);
|
}
|
||||||
gpio_init_af(spi_config[bus].miso_pin, spi_config[bus].miso_af);
|
|
||||||
gpio_init_af(spi_config[bus].sclk_pin, spi_config[bus].sclk_af);
|
if (gpio_is_valid(spi_config[bus].miso_pin)) {
|
||||||
|
gpio_init(spi_config[bus].miso_pin, GPIO_IN);
|
||||||
|
gpio_init_af(spi_config[bus].miso_pin, spi_config[bus].miso_af);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gpio_is_valid(spi_config[bus].sclk_pin)) {
|
||||||
|
gpio_init(spi_config[bus].sclk_pin, GPIO_OUT);
|
||||||
|
gpio_init_af(spi_config[bus].sclk_pin, spi_config[bus].sclk_af);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -183,12 +200,20 @@ int spi_init_with_gpio_mode(spi_t bus, spi_gpio_mode_t mode)
|
|||||||
/* This has no effect on STM32F1 */
|
/* This has no effect on STM32F1 */
|
||||||
return ret;
|
return ret;
|
||||||
#else
|
#else
|
||||||
ret += gpio_init(spi_config[bus].mosi_pin, mode.mosi);
|
if (gpio_is_valid(spi_config[bus].mosi_pin)) {
|
||||||
ret += gpio_init(spi_config[bus].miso_pin, mode.miso);
|
ret += gpio_init(spi_config[bus].mosi_pin, mode.mosi);
|
||||||
ret += gpio_init(spi_config[bus].sclk_pin, mode.sclk);
|
gpio_init_af(spi_config[bus].mosi_pin, spi_config[bus].mosi_af);
|
||||||
gpio_init_af(spi_config[bus].mosi_pin, spi_config[bus].mosi_af);
|
}
|
||||||
gpio_init_af(spi_config[bus].miso_pin, spi_config[bus].miso_af);
|
|
||||||
gpio_init_af(spi_config[bus].sclk_pin, spi_config[bus].sclk_af);
|
if (gpio_is_valid(spi_config[bus].miso_pin)) {
|
||||||
|
ret += gpio_init(spi_config[bus].miso_pin, mode.miso);
|
||||||
|
gpio_init_af(spi_config[bus].miso_pin, spi_config[bus].miso_af);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gpio_is_valid(spi_config[bus].sclk_pin)) {
|
||||||
|
ret += gpio_init(spi_config[bus].sclk_pin, mode.sclk);
|
||||||
|
gpio_init_af(spi_config[bus].sclk_pin, spi_config[bus].sclk_af);
|
||||||
|
}
|
||||||
return ret;
|
return ret;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user