I'm pretty sure it's not pin settings, as I used the same board.h file with the USART2 driver with no issues. I use the board.h file to name all of my pins and specify input or output, but alternate functions and other pin settings I set in initialization functions in my code.
board.h (with ports E-I removed)
Code: Select all
/*
* Board oscillators-related settings.
*/
#if !defined(STM32_LSECLK)
#define STM32_LSECLK 0
#endif
#if !defined(STM32_HSECLK)
#define STM32_HSECLK 0
#endif
/*
* Board voltages.
* Required for performance limits calculation.
*/
#define STM32_VDD 330
/*
* MCU type as defined in the ST header.
*/
#define STM32F411xE
/*
* IO pins assignments.
*/
#define GPIOA_BLE_USART2_CTS 0
#define GPIOA_BLE_USART2_RTS 1
#define GPIOA_BLE_USART2_TX 2
#define GPIOA_BLE_USART2_RX 3
#define GPIOA_PIN4 4
#define GPIOA_BS_CS_OUTPUT 5
#define GPIOA_PIN6 6
#define GPIOA_PIN7 7
#define GPIOA_LED_I2C3_SCL 8
#define GPIOA_USBG_VBUS 9
#define GPIOA_USBG_ID 10
#define GPIOA_USBG_DM 11
#define GPIOA_USBG_DP 12
#define GPIOA_DBG_SWDIO 13
#define GPIOA_DBG_SWCLK 14
#define GPIOA_PIN15 15
#define GPIOB_BUZZ_TIMER3_CH3 0
#define GPIOB_MS_FS_OUTPUT 1
#define GPIOB_BOOT1 2
#define GPIOB_DBG_SWO 3
#define GPIOB_PIN4 4
#define GPIOB_PIN5 5
#define GPIOB_BS_USART1_TX 6
#define GPIOB_BS_USART1_RX 7
#define GPIOB_LED_I2C3_SDA 8
#define GPIOB_MS_I2C2_SDA 9
#define GPIOB_MS_I2C2_SCL 10
#define GPIOB_PIN11 11
#define GPIOB_PIN12 12
#define GPIOB_BS_NRESET_OUTPUT 13
#define GPIOB_BATT_FULLCHARGE_INPUT 14
#define GPIOB_LED_ENABLE_OUTPUT 15
#define GPIOC_BLE_WAKEUP_OUTPUT 0
#define GPIOC_BOARD_POWER_OUTPUT 1
#define GPIOC_BLE_NRESET_OUTPUT 2
#define GPIOC_BS_POWER_OUTPUT 3
#define GPIOC_BLE_NPOWER_OUTPUT 4
#define GPIOC_MS_INT_INPUT 5
#define GPIOC_PIN6 6
#define GPIOC_PIN7 7
#define GPIOC_SDCARD_D0 8
#define GPIOC_SDCARD_D1 9
#define GPIOC_SDCARD_D2 10
#define GPIOC_SDCARD_D3 11
#define GPIOC_SDCARD_CLK 12
#define GPIOC_NBTN_INPUT 13
#define GPIOC_OSC32_IN 14
#define GPIOC_OSC32_OUT 15
#define GPIOD_PIN0 0
#define GPIOD_PIN1 1
#define GPIOD_SDCARD_CMD 2
#define GPIOD_PIN3 3
#define GPIOD_PIN4 4
#define GPIOD_PIN5 5
#define GPIOD_PIN6 6
#define GPIOD_PIN7 7
#define GPIOD_PIN8 8
#define GPIOD_PIN9 9
#define GPIOD_PIN10 10
#define GPIOD_PIN11 11
#define GPIOD_PIN12 12
#define GPIOD_PIN13 13
#define GPIOD_PIN14 14
#define GPIOD_PIN15 15
/*
* I/O ports initial setup, this configuration is established soon after reset
* in the initialization code.
* Please refer to the STM32 Reference Manual for details.
*/
#define PIN_MODE_INPUT(n) (0U << ((n) * 2))
#define PIN_MODE_OUTPUT(n) (1U << ((n) * 2))
#define PIN_MODE_ALTERNATE(n) (2U << ((n) * 2))
#define PIN_MODE_ANALOG(n) (3U << ((n) * 2))
#define PIN_ODR_LOW(n) (0U << (n))
#define PIN_ODR_HIGH(n) (1U << (n))
#define PIN_OTYPE_PUSHPULL(n) (0U << (n))
#define PIN_OTYPE_OPENDRAIN(n) (1U << (n))
#define PIN_OSPEED_2M(n) (0U << ((n) * 2))
#define PIN_OSPEED_25M(n) (1U << ((n) * 2))
#define PIN_OSPEED_50M(n) (2U << ((n) * 2))
#define PIN_OSPEED_100M(n) (3U << ((n) * 2))
#define PIN_PUPDR_FLOATING(n) (0U << ((n) * 2))
#define PIN_PUPDR_PULLUP(n) (1U << ((n) * 2))
#define PIN_PUPDR_PULLDOWN(n) (2U << ((n) * 2))
#define PIN_AFIO_AF(n, v) ((v##U) << ((n % 8) * 4))
/*
* GPIOA setup:
*
* PA0 - BLE_USART2_CTS (input pulldown).
* PA1 - BLE_USART2_RTS (input pulldown).
* PA2 - BLE_USART2_TX (input pulldown).
* PA3 - BLE_USART2_RX (input pulldown).
* PA4 - PIN4 (input pulldown).
* PA5 - BS_CS_OUTPUT (output pushpull high).
* PA6 - PIN6 (input pullup).
* PA7 - PIN7 (input pulldown).
* PA8 - LED_I2C3_SCL (input floating).
* PA9 - USBG_VBUS (input pulldown).
* PA10 - USBG_ID (input pulldown).
* PA11 - USBG_DM (input pulldown).
* PA12 - USBG_DP (input pulldown).
* PA13 - DBG_SWDIO (alternate 0).
* PA14 - DBG_SWCLK (alternate 0).
* PA15 - PIN15 (input pulldown).
*/
#define VAL_GPIOA_MODER (PIN_MODE_INPUT(GPIOA_BLE_USART2_CTS) | \
PIN_MODE_INPUT(GPIOA_BLE_USART2_RTS) | \
PIN_MODE_INPUT(GPIOA_BLE_USART2_TX) | \
PIN_MODE_INPUT(GPIOA_BLE_USART2_RX) | \
PIN_MODE_INPUT(GPIOA_PIN4) | \
PIN_MODE_OUTPUT(GPIOA_BS_CS_OUTPUT) | \
PIN_MODE_INPUT(GPIOA_PIN6) | \
PIN_MODE_INPUT(GPIOA_PIN7) | \
PIN_MODE_INPUT(GPIOA_LED_I2C3_SCL) | \
PIN_MODE_INPUT(GPIOA_USBG_VBUS) | \
PIN_MODE_INPUT(GPIOA_USBG_ID) | \
PIN_MODE_INPUT(GPIOA_USBG_DM) | \
PIN_MODE_INPUT(GPIOA_USBG_DP) | \
PIN_MODE_ALTERNATE(GPIOA_DBG_SWDIO) | \
PIN_MODE_ALTERNATE(GPIOA_DBG_SWCLK) | \
PIN_MODE_INPUT(GPIOA_PIN15))
#define VAL_GPIOA_OTYPER (PIN_OTYPE_PUSHPULL(GPIOA_BLE_USART2_CTS) |\
PIN_OTYPE_PUSHPULL(GPIOA_BLE_USART2_RTS) |\
PIN_OTYPE_PUSHPULL(GPIOA_BLE_USART2_TX) |\
PIN_OTYPE_PUSHPULL(GPIOA_BLE_USART2_RX) |\
PIN_OTYPE_PUSHPULL(GPIOA_PIN4) | \
PIN_OTYPE_PUSHPULL(GPIOA_BS_CS_OUTPUT) |\
PIN_OTYPE_PUSHPULL(GPIOA_PIN6) | \
PIN_OTYPE_PUSHPULL(GPIOA_PIN7) | \
PIN_OTYPE_PUSHPULL(GPIOA_LED_I2C3_SCL) |\
PIN_OTYPE_PUSHPULL(GPIOA_USBG_VBUS) | \
PIN_OTYPE_PUSHPULL(GPIOA_USBG_ID) | \
PIN_OTYPE_PUSHPULL(GPIOA_USBG_DM) | \
PIN_OTYPE_PUSHPULL(GPIOA_USBG_DP) | \
PIN_OTYPE_PUSHPULL(GPIOA_DBG_SWDIO) | \
PIN_OTYPE_PUSHPULL(GPIOA_DBG_SWCLK) | \
PIN_OTYPE_PUSHPULL(GPIOA_PIN15))
#define VAL_GPIOA_OSPEEDR (PIN_OSPEED_100M(GPIOA_BLE_USART2_CTS) |\
PIN_OSPEED_100M(GPIOA_BLE_USART2_RTS) |\
PIN_OSPEED_100M(GPIOA_BLE_USART2_TX) | \
PIN_OSPEED_100M(GPIOA_BLE_USART2_RX) | \
PIN_OSPEED_100M(GPIOA_PIN4) | \
PIN_OSPEED_50M(GPIOA_BS_CS_OUTPUT) | \
PIN_OSPEED_100M(GPIOA_PIN6) | \
PIN_OSPEED_100M(GPIOA_PIN7) | \
PIN_OSPEED_100M(GPIOA_LED_I2C3_SCL) | \
PIN_OSPEED_100M(GPIOA_USBG_VBUS) | \
PIN_OSPEED_100M(GPIOA_USBG_ID) | \
PIN_OSPEED_100M(GPIOA_USBG_DM) | \
PIN_OSPEED_100M(GPIOA_USBG_DP) | \
PIN_OSPEED_100M(GPIOA_DBG_SWDIO) | \
PIN_OSPEED_100M(GPIOA_DBG_SWCLK) | \
PIN_OSPEED_100M(GPIOA_PIN15))
#define VAL_GPIOA_PUPDR (PIN_PUPDR_PULLDOWN(GPIOA_BLE_USART2_CTS) |\
PIN_PUPDR_PULLDOWN(GPIOA_BLE_USART2_RTS) |\
PIN_PUPDR_PULLDOWN(GPIOA_BLE_USART2_TX) |\
PIN_PUPDR_PULLDOWN(GPIOA_BLE_USART2_RX) |\
PIN_PUPDR_PULLDOWN(GPIOA_PIN4) | \
PIN_PUPDR_FLOATING(GPIOA_BS_CS_OUTPUT) |\
PIN_PUPDR_PULLUP(GPIOA_PIN6) | \
PIN_PUPDR_PULLDOWN(GPIOA_PIN7) | \
PIN_PUPDR_FLOATING(GPIOA_LED_I2C3_SCL) |\
PIN_PUPDR_PULLDOWN(GPIOA_USBG_VBUS) | \
PIN_PUPDR_PULLDOWN(GPIOA_USBG_ID) | \
PIN_PUPDR_PULLDOWN(GPIOA_USBG_DM) | \
PIN_PUPDR_PULLDOWN(GPIOA_USBG_DP) | \
PIN_PUPDR_PULLUP(GPIOA_DBG_SWDIO) | \
PIN_PUPDR_PULLDOWN(GPIOA_DBG_SWCLK) | \
PIN_PUPDR_PULLDOWN(GPIOA_PIN15))
#define VAL_GPIOA_ODR (PIN_ODR_HIGH(GPIOA_BLE_USART2_CTS) | \
PIN_ODR_HIGH(GPIOA_BLE_USART2_RTS) | \
PIN_ODR_HIGH(GPIOA_BLE_USART2_TX) | \
PIN_ODR_HIGH(GPIOA_BLE_USART2_RX) | \
PIN_ODR_HIGH(GPIOA_PIN4) | \
PIN_ODR_LOW(GPIOA_BS_CS_OUTPUT) | \
PIN_ODR_HIGH(GPIOA_PIN6) | \
PIN_ODR_HIGH(GPIOA_PIN7) | \
PIN_ODR_HIGH(GPIOA_LED_I2C3_SCL) | \
PIN_ODR_HIGH(GPIOA_USBG_VBUS) | \
PIN_ODR_HIGH(GPIOA_USBG_ID) | \
PIN_ODR_HIGH(GPIOA_USBG_DM) | \
PIN_ODR_HIGH(GPIOA_USBG_DP) | \
PIN_ODR_HIGH(GPIOA_DBG_SWDIO) | \
PIN_ODR_HIGH(GPIOA_DBG_SWCLK) | \
PIN_ODR_HIGH(GPIOA_PIN15))
#define VAL_GPIOA_AFRL (PIN_AFIO_AF(GPIOA_BLE_USART2_CTS, 0) | \
PIN_AFIO_AF(GPIOA_BLE_USART2_RTS, 0) | \
PIN_AFIO_AF(GPIOA_BLE_USART2_TX, 0) | \
PIN_AFIO_AF(GPIOA_BLE_USART2_RX, 0) | \
PIN_AFIO_AF(GPIOA_PIN4, 0) | \
PIN_AFIO_AF(GPIOA_BS_CS_OUTPUT, 0) | \
PIN_AFIO_AF(GPIOA_PIN6, 0) | \
PIN_AFIO_AF(GPIOA_PIN7, 0))
#define VAL_GPIOA_AFRH (PIN_AFIO_AF(GPIOA_LED_I2C3_SCL, 0) | \
PIN_AFIO_AF(GPIOA_USBG_VBUS, 0) | \
PIN_AFIO_AF(GPIOA_USBG_ID, 0) | \
PIN_AFIO_AF(GPIOA_USBG_DM, 0) | \
PIN_AFIO_AF(GPIOA_USBG_DP, 0) | \
PIN_AFIO_AF(GPIOA_DBG_SWDIO, 0) | \
PIN_AFIO_AF(GPIOA_DBG_SWCLK, 0) | \
PIN_AFIO_AF(GPIOA_PIN15, 0))
/*
* GPIOB setup:
*
* PB0 - BUZZ_TIMER3_CH3 (output pushpull maximum).
* PB1 - MS_FS_OUTPUT (output pushpull maximum).
* PB2 - BOOT1 (input floating).
* PB3 - DBG_SWO (alternate 0).
* PB4 - PIN4 (input pulldown).
* PB5 - PIN5 (input pulldown).
* PB6 - BS_USART1_TX (output pushpull maximum).
* PB7 - BS_USART1_RX (input pullup).
* PB8 - LED_I2C3_SDA (input floating).
* PB9 - MS_I2C2_SDA (input floating).
* PB10 - MS_I2C2_SCL (input floating).
* PB11 - PIN11 (input pulldown).
* PB12 - PIN12 (input pulldown).
* PB13 - BS_NRESET_OUTPUT (output pushpull maximum).
* PB14 - BATT_FULLCHARGE_INPUT (input floating).
* PB15 - LED_ENABLE_OUTPUT (output pushpull maximum).
*/
#define VAL_GPIOB_MODER (PIN_MODE_OUTPUT(GPIOB_BUZZ_TIMER3_CH3) |\
PIN_MODE_OUTPUT(GPIOB_MS_FS_OUTPUT) | \
PIN_MODE_INPUT(GPIOB_BOOT1) | \
PIN_MODE_ALTERNATE(GPIOB_DBG_SWO) | \
PIN_MODE_INPUT(GPIOB_PIN4) | \
PIN_MODE_INPUT(GPIOB_PIN5) | \
PIN_MODE_OUTPUT(GPIOB_BS_USART1_TX) | \
PIN_MODE_INPUT(GPIOB_BS_USART1_RX) | \
PIN_MODE_INPUT(GPIOB_LED_I2C3_SDA) | \
PIN_MODE_INPUT(GPIOB_MS_I2C2_SDA) | \
PIN_MODE_INPUT(GPIOB_MS_I2C2_SCL) | \
PIN_MODE_INPUT(GPIOB_PIN11) | \
PIN_MODE_INPUT(GPIOB_PIN12) | \
PIN_MODE_OUTPUT(GPIOB_BS_NRESET_OUTPUT) |\
PIN_MODE_INPUT(GPIOB_BATT_FULLCHARGE_INPUT) |\
PIN_MODE_OUTPUT(GPIOB_LED_ENABLE_OUTPUT))
#define VAL_GPIOB_OTYPER (PIN_OTYPE_PUSHPULL(GPIOB_BUZZ_TIMER3_CH3) |\
PIN_OTYPE_PUSHPULL(GPIOB_MS_FS_OUTPUT) |\
PIN_OTYPE_PUSHPULL(GPIOB_BOOT1) | \
PIN_OTYPE_PUSHPULL(GPIOB_DBG_SWO) | \
PIN_OTYPE_PUSHPULL(GPIOB_PIN4) | \
PIN_OTYPE_PUSHPULL(GPIOB_PIN5) | \
PIN_OTYPE_PUSHPULL(GPIOB_BS_USART1_TX) |\
PIN_OTYPE_PUSHPULL(GPIOB_BS_USART1_RX) |\
PIN_OTYPE_PUSHPULL(GPIOB_LED_I2C3_SDA) |\
PIN_OTYPE_PUSHPULL(GPIOB_MS_I2C2_SDA) |\
PIN_OTYPE_PUSHPULL(GPIOB_MS_I2C2_SCL) |\
PIN_OTYPE_PUSHPULL(GPIOB_PIN11) | \
PIN_OTYPE_PUSHPULL(GPIOB_PIN12) | \
PIN_OTYPE_PUSHPULL(GPIOB_BS_NRESET_OUTPUT) |\
PIN_OTYPE_PUSHPULL(GPIOB_BATT_FULLCHARGE_INPUT) |\
PIN_OTYPE_PUSHPULL(GPIOB_LED_ENABLE_OUTPUT))
#define VAL_GPIOB_OSPEEDR (PIN_OSPEED_100M(GPIOB_BUZZ_TIMER3_CH3) |\
PIN_OSPEED_100M(GPIOB_MS_FS_OUTPUT) | \
PIN_OSPEED_100M(GPIOB_BOOT1) | \
PIN_OSPEED_100M(GPIOB_DBG_SWO) | \
PIN_OSPEED_100M(GPIOB_PIN4) | \
PIN_OSPEED_100M(GPIOB_PIN5) | \
PIN_OSPEED_100M(GPIOB_BS_USART1_TX) | \
PIN_OSPEED_100M(GPIOB_BS_USART1_RX) | \
PIN_OSPEED_100M(GPIOB_LED_I2C3_SDA) | \
PIN_OSPEED_100M(GPIOB_MS_I2C2_SDA) | \
PIN_OSPEED_100M(GPIOB_MS_I2C2_SCL) | \
PIN_OSPEED_100M(GPIOB_PIN11) | \
PIN_OSPEED_100M(GPIOB_PIN12) | \
PIN_OSPEED_100M(GPIOB_BS_NRESET_OUTPUT) |\
PIN_OSPEED_100M(GPIOB_BATT_FULLCHARGE_INPUT) |\
PIN_OSPEED_100M(GPIOB_LED_ENABLE_OUTPUT))
#define VAL_GPIOB_PUPDR (PIN_PUPDR_FLOATING(GPIOB_BUZZ_TIMER3_CH3) |\
PIN_PUPDR_FLOATING(GPIOB_MS_FS_OUTPUT) |\
PIN_PUPDR_FLOATING(GPIOB_BOOT1) | \
PIN_PUPDR_PULLUP(GPIOB_DBG_SWO) | \
PIN_PUPDR_PULLDOWN(GPIOB_PIN4) | \
PIN_PUPDR_PULLDOWN(GPIOB_PIN5) | \
PIN_PUPDR_FLOATING(GPIOB_BS_USART1_TX) |\
PIN_PUPDR_PULLUP(GPIOB_BS_USART1_RX) | \
PIN_PUPDR_FLOATING(GPIOB_LED_I2C3_SDA) |\
PIN_PUPDR_FLOATING(GPIOB_MS_I2C2_SDA) |\
PIN_PUPDR_FLOATING(GPIOB_MS_I2C2_SCL) |\
PIN_PUPDR_PULLDOWN(GPIOB_PIN11) | \
PIN_PUPDR_PULLDOWN(GPIOB_PIN12) | \
PIN_PUPDR_FLOATING(GPIOB_BS_NRESET_OUTPUT) |\
PIN_PUPDR_FLOATING(GPIOB_BATT_FULLCHARGE_INPUT) |\
PIN_PUPDR_FLOATING(GPIOB_LED_ENABLE_OUTPUT))
#define VAL_GPIOB_ODR (PIN_ODR_LOW(GPIOB_BUZZ_TIMER3_CH3) | \
PIN_ODR_LOW(GPIOB_MS_FS_OUTPUT) | \
PIN_ODR_HIGH(GPIOB_BOOT1) | \
PIN_ODR_HIGH(GPIOB_DBG_SWO) | \
PIN_ODR_HIGH(GPIOB_PIN4) | \
PIN_ODR_HIGH(GPIOB_PIN5) | \
PIN_ODR_HIGH(GPIOB_BS_USART1_TX) | \
PIN_ODR_HIGH(GPIOB_BS_USART1_RX) | \
PIN_ODR_HIGH(GPIOB_LED_I2C3_SDA) | \
PIN_ODR_HIGH(GPIOB_MS_I2C2_SDA) | \
PIN_ODR_HIGH(GPIOB_MS_I2C2_SCL) | \
PIN_ODR_HIGH(GPIOB_PIN11) | \
PIN_ODR_HIGH(GPIOB_PIN12) | \
PIN_ODR_HIGH(GPIOB_BS_NRESET_OUTPUT) | \
PIN_ODR_HIGH(GPIOB_BATT_FULLCHARGE_INPUT) |\
PIN_ODR_LOW(GPIOB_LED_ENABLE_OUTPUT))
#define VAL_GPIOB_AFRL (PIN_AFIO_AF(GPIOB_BUZZ_TIMER3_CH3, 0) |\
PIN_AFIO_AF(GPIOB_MS_FS_OUTPUT, 0) | \
PIN_AFIO_AF(GPIOB_BOOT1, 0) | \
PIN_AFIO_AF(GPIOB_DBG_SWO, 0) | \
PIN_AFIO_AF(GPIOB_PIN4, 0) | \
PIN_AFIO_AF(GPIOB_PIN5, 0) | \
PIN_AFIO_AF(GPIOB_BS_USART1_TX, 0) | \
PIN_AFIO_AF(GPIOB_BS_USART1_RX, 0))
#define VAL_GPIOB_AFRH (PIN_AFIO_AF(GPIOB_LED_I2C3_SDA, 0) | \
PIN_AFIO_AF(GPIOB_MS_I2C2_SDA, 0) | \
PIN_AFIO_AF(GPIOB_MS_I2C2_SCL, 0) | \
PIN_AFIO_AF(GPIOB_PIN11, 0) | \
PIN_AFIO_AF(GPIOB_PIN12, 0) | \
PIN_AFIO_AF(GPIOB_BS_NRESET_OUTPUT, 0) |\
PIN_AFIO_AF(GPIOB_BATT_FULLCHARGE_INPUT, 0) |\
PIN_AFIO_AF(GPIOB_LED_ENABLE_OUTPUT, 0))
/*
* GPIOC setup:
*
* PC0 - BLE_WAKEUP_OUTPUT (output pushpull maximum).
* PC1 - BOARD_POWER_OUTPUT (output pushpull maximum).
* PC2 - BLE_NRESET_OUTPUT (output pushpull maximum).
* PC3 - BS_POWER_OUTPUT (output pushpull maximum).
* PC4 - BLE_NPOWER_OUTPUT (output pushpull maximum).
* PC5 - MS_INT_INPUT (input pulldown).
* PC6 - PIN6 (input pullup).
* PC7 - PIN7 (input pulldown).
* PC8 - SDCARD_D0 (input floating).
* PC9 - SDCARD_D1 (input floating).
* PC10 - SDCARD_D2 (input floating).
* PC11 - SDCARD_D3 (input floating).
* PC12 - SDCARD_CLK (input pulldown).
* PC13 - NBTN_INPUT (input floating).
* PC14 - OSC32_IN (input pulldown).
* PC15 - OSC32_OUT (input pulldown).
*/
#define VAL_GPIOC_MODER (PIN_MODE_OUTPUT(GPIOC_BLE_WAKEUP_OUTPUT) |\
PIN_MODE_OUTPUT(GPIOC_BOARD_POWER_OUTPUT) |\
PIN_MODE_OUTPUT(GPIOC_BLE_NRESET_OUTPUT) |\
PIN_MODE_OUTPUT(GPIOC_BS_POWER_OUTPUT) |\
PIN_MODE_OUTPUT(GPIOC_BLE_NPOWER_OUTPUT) |\
PIN_MODE_INPUT(GPIOC_MS_INT_INPUT) | \
PIN_MODE_INPUT(GPIOC_PIN6) | \
PIN_MODE_INPUT(GPIOC_PIN7) | \
PIN_MODE_INPUT(GPIOC_SDCARD_D0) | \
PIN_MODE_INPUT(GPIOC_SDCARD_D1) | \
PIN_MODE_INPUT(GPIOC_SDCARD_D2) | \
PIN_MODE_INPUT(GPIOC_SDCARD_D3) | \
PIN_MODE_INPUT(GPIOC_SDCARD_CLK) | \
PIN_MODE_INPUT(GPIOC_NBTN_INPUT) | \
PIN_MODE_INPUT(GPIOC_OSC32_IN) | \
PIN_MODE_INPUT(GPIOC_OSC32_OUT))
#define VAL_GPIOC_OTYPER (PIN_OTYPE_PUSHPULL(GPIOC_BLE_WAKEUP_OUTPUT) |\
PIN_OTYPE_PUSHPULL(GPIOC_BOARD_POWER_OUTPUT) |\
PIN_OTYPE_PUSHPULL(GPIOC_BLE_NRESET_OUTPUT) |\
PIN_OTYPE_PUSHPULL(GPIOC_BS_POWER_OUTPUT) |\
PIN_OTYPE_PUSHPULL(GPIOC_BLE_NPOWER_OUTPUT) |\
PIN_OTYPE_PUSHPULL(GPIOC_MS_INT_INPUT) |\
PIN_OTYPE_PUSHPULL(GPIOC_PIN6) | \
PIN_OTYPE_PUSHPULL(GPIOC_PIN7) | \
PIN_OTYPE_PUSHPULL(GPIOC_SDCARD_D0) | \
PIN_OTYPE_PUSHPULL(GPIOC_SDCARD_D1) | \
PIN_OTYPE_PUSHPULL(GPIOC_SDCARD_D2) | \
PIN_OTYPE_PUSHPULL(GPIOC_SDCARD_D3) | \
PIN_OTYPE_PUSHPULL(GPIOC_SDCARD_CLK) | \
PIN_OTYPE_PUSHPULL(GPIOC_NBTN_INPUT) | \
PIN_OTYPE_PUSHPULL(GPIOC_OSC32_IN) | \
PIN_OTYPE_PUSHPULL(GPIOC_OSC32_OUT))
#define VAL_GPIOC_OSPEEDR (PIN_OSPEED_100M(GPIOC_BLE_WAKEUP_OUTPUT) |\
PIN_OSPEED_100M(GPIOC_BOARD_POWER_OUTPUT) |\
PIN_OSPEED_100M(GPIOC_BLE_NRESET_OUTPUT) |\
PIN_OSPEED_100M(GPIOC_BS_POWER_OUTPUT) |\
PIN_OSPEED_100M(GPIOC_BLE_NPOWER_OUTPUT) |\
PIN_OSPEED_100M(GPIOC_MS_INT_INPUT) | \
PIN_OSPEED_100M(GPIOC_PIN6) | \
PIN_OSPEED_100M(GPIOC_PIN7) | \
PIN_OSPEED_100M(GPIOC_SDCARD_D0) | \
PIN_OSPEED_100M(GPIOC_SDCARD_D1) | \
PIN_OSPEED_100M(GPIOC_SDCARD_D2) | \
PIN_OSPEED_100M(GPIOC_SDCARD_D3) | \
PIN_OSPEED_100M(GPIOC_SDCARD_CLK) | \
PIN_OSPEED_100M(GPIOC_NBTN_INPUT) | \
PIN_OSPEED_100M(GPIOC_OSC32_IN) | \
PIN_OSPEED_100M(GPIOC_OSC32_OUT))
#define VAL_GPIOC_PUPDR (PIN_PUPDR_FLOATING(GPIOC_BLE_WAKEUP_OUTPUT) |\
PIN_PUPDR_FLOATING(GPIOC_BOARD_POWER_OUTPUT) |\
PIN_PUPDR_FLOATING(GPIOC_BLE_NRESET_OUTPUT) |\
PIN_PUPDR_FLOATING(GPIOC_BS_POWER_OUTPUT) |\
PIN_PUPDR_FLOATING(GPIOC_BLE_NPOWER_OUTPUT) |\
PIN_PUPDR_PULLDOWN(GPIOC_MS_INT_INPUT) |\
PIN_PUPDR_PULLUP(GPIOC_PIN6) | \
PIN_PUPDR_PULLDOWN(GPIOC_PIN7) | \
PIN_PUPDR_FLOATING(GPIOC_SDCARD_D0) | \
PIN_PUPDR_FLOATING(GPIOC_SDCARD_D1) | \
PIN_PUPDR_FLOATING(GPIOC_SDCARD_D2) | \
PIN_PUPDR_FLOATING(GPIOC_SDCARD_D3) | \
PIN_PUPDR_PULLDOWN(GPIOC_SDCARD_CLK) | \
PIN_PUPDR_FLOATING(GPIOC_NBTN_INPUT) | \
PIN_PUPDR_PULLDOWN(GPIOC_OSC32_IN) | \
PIN_PUPDR_PULLDOWN(GPIOC_OSC32_OUT))
#define VAL_GPIOC_ODR (PIN_ODR_LOW(GPIOC_BLE_WAKEUP_OUTPUT) | \
PIN_ODR_LOW(GPIOC_BOARD_POWER_OUTPUT) |\
PIN_ODR_HIGH(GPIOC_BLE_NRESET_OUTPUT) |\
PIN_ODR_LOW(GPIOC_BS_POWER_OUTPUT) | \
PIN_ODR_HIGH(GPIOC_BLE_NPOWER_OUTPUT) |\
PIN_ODR_HIGH(GPIOC_MS_INT_INPUT) | \
PIN_ODR_HIGH(GPIOC_PIN6) | \
PIN_ODR_HIGH(GPIOC_PIN7) | \
PIN_ODR_HIGH(GPIOC_SDCARD_D0) | \
PIN_ODR_HIGH(GPIOC_SDCARD_D1) | \
PIN_ODR_HIGH(GPIOC_SDCARD_D2) | \
PIN_ODR_HIGH(GPIOC_SDCARD_D3) | \
PIN_ODR_HIGH(GPIOC_SDCARD_CLK) | \
PIN_ODR_HIGH(GPIOC_NBTN_INPUT) | \
PIN_ODR_HIGH(GPIOC_OSC32_IN) | \
PIN_ODR_HIGH(GPIOC_OSC32_OUT))
#define VAL_GPIOC_AFRL (PIN_AFIO_AF(GPIOC_BLE_WAKEUP_OUTPUT, 0) |\
PIN_AFIO_AF(GPIOC_BOARD_POWER_OUTPUT, 0) |\
PIN_AFIO_AF(GPIOC_BLE_NRESET_OUTPUT, 0) |\
PIN_AFIO_AF(GPIOC_BS_POWER_OUTPUT, 0) |\
PIN_AFIO_AF(GPIOC_BLE_NPOWER_OUTPUT, 0) |\
PIN_AFIO_AF(GPIOC_MS_INT_INPUT, 0) | \
PIN_AFIO_AF(GPIOC_PIN6, 0) | \
PIN_AFIO_AF(GPIOC_PIN7, 0))
#define VAL_GPIOC_AFRH (PIN_AFIO_AF(GPIOC_SDCARD_D0, 0) | \
PIN_AFIO_AF(GPIOC_SDCARD_D1, 0) | \
PIN_AFIO_AF(GPIOC_SDCARD_D2, 0) | \
PIN_AFIO_AF(GPIOC_SDCARD_D3, 0) | \
PIN_AFIO_AF(GPIOC_SDCARD_CLK, 0) | \
PIN_AFIO_AF(GPIOC_NBTN_INPUT, 0) | \
PIN_AFIO_AF(GPIOC_OSC32_IN, 0) | \
PIN_AFIO_AF(GPIOC_OSC32_OUT, 0))
/*
* GPIOD setup:
*
* PD0 - PIN0 (input pulldown).
* PD1 - PIN1 (input pulldown).
* PD2 - SDCARD_CMD (input floating).
* PD3 - PIN3 (input pulldown).
* PD4 - PIN4 (input pulldown).
* PD5 - PIN5 (input pulldown).
* PD6 - PIN6 (input pulldown).
* PD7 - PIN7 (input pulldown).
* PD8 - PIN8 (input pulldown).
* PD9 - PIN9 (input pulldown).
* PD10 - PIN10 (input pulldown).
* PD11 - PIN11 (input pulldown).
* PD12 - PIN12 (input pulldown).
* PD13 - PIN13 (input pulldown).
* PD14 - PIN14 (input pulldown).
* PD15 - PIN15 (input pulldown).
*/
#define VAL_GPIOD_MODER (PIN_MODE_INPUT(GPIOD_PIN0) | \
PIN_MODE_INPUT(GPIOD_PIN1) | \
PIN_MODE_INPUT(GPIOD_SDCARD_CMD) | \
PIN_MODE_INPUT(GPIOD_PIN3) | \
PIN_MODE_INPUT(GPIOD_PIN4) | \
PIN_MODE_INPUT(GPIOD_PIN5) | \
PIN_MODE_INPUT(GPIOD_PIN6) | \
PIN_MODE_INPUT(GPIOD_PIN7) | \
PIN_MODE_INPUT(GPIOD_PIN8) | \
PIN_MODE_INPUT(GPIOD_PIN9) | \
PIN_MODE_INPUT(GPIOD_PIN10) | \
PIN_MODE_INPUT(GPIOD_PIN11) | \
PIN_MODE_INPUT(GPIOD_PIN12) | \
PIN_MODE_INPUT(GPIOD_PIN13) | \
PIN_MODE_INPUT(GPIOD_PIN14) | \
PIN_MODE_INPUT(GPIOD_PIN15))
#define VAL_GPIOD_OTYPER (PIN_OTYPE_PUSHPULL(GPIOD_PIN0) | \
PIN_OTYPE_PUSHPULL(GPIOD_PIN1) | \
PIN_OTYPE_PUSHPULL(GPIOD_SDCARD_CMD) | \
PIN_OTYPE_PUSHPULL(GPIOD_PIN3) | \
PIN_OTYPE_PUSHPULL(GPIOD_PIN4) | \
PIN_OTYPE_PUSHPULL(GPIOD_PIN5) | \
PIN_OTYPE_PUSHPULL(GPIOD_PIN6) | \
PIN_OTYPE_PUSHPULL(GPIOD_PIN7) | \
PIN_OTYPE_PUSHPULL(GPIOD_PIN8) | \
PIN_OTYPE_PUSHPULL(GPIOD_PIN9) | \
PIN_OTYPE_PUSHPULL(GPIOD_PIN10) | \
PIN_OTYPE_PUSHPULL(GPIOD_PIN11) | \
PIN_OTYPE_PUSHPULL(GPIOD_PIN12) | \
PIN_OTYPE_PUSHPULL(GPIOD_PIN13) | \
PIN_OTYPE_PUSHPULL(GPIOD_PIN14) | \
PIN_OTYPE_PUSHPULL(GPIOD_PIN15))
#define VAL_GPIOD_OSPEEDR (PIN_OSPEED_100M(GPIOD_PIN0) | \
PIN_OSPEED_100M(GPIOD_PIN1) | \
PIN_OSPEED_100M(GPIOD_SDCARD_CMD) | \
PIN_OSPEED_100M(GPIOD_PIN3) | \
PIN_OSPEED_100M(GPIOD_PIN4) | \
PIN_OSPEED_100M(GPIOD_PIN5) | \
PIN_OSPEED_100M(GPIOD_PIN6) | \
PIN_OSPEED_100M(GPIOD_PIN7) | \
PIN_OSPEED_100M(GPIOD_PIN8) | \
PIN_OSPEED_100M(GPIOD_PIN9) | \
PIN_OSPEED_100M(GPIOD_PIN10) | \
PIN_OSPEED_100M(GPIOD_PIN11) | \
PIN_OSPEED_100M(GPIOD_PIN12) | \
PIN_OSPEED_100M(GPIOD_PIN13) | \
PIN_OSPEED_100M(GPIOD_PIN14) | \
PIN_OSPEED_100M(GPIOD_PIN15))
#define VAL_GPIOD_PUPDR (PIN_PUPDR_PULLDOWN(GPIOD_PIN0) | \
PIN_PUPDR_PULLDOWN(GPIOD_PIN1) | \
PIN_PUPDR_FLOATING(GPIOD_SDCARD_CMD) | \
PIN_PUPDR_PULLDOWN(GPIOD_PIN3) | \
PIN_PUPDR_PULLDOWN(GPIOD_PIN4) | \
PIN_PUPDR_PULLDOWN(GPIOD_PIN5) | \
PIN_PUPDR_PULLDOWN(GPIOD_PIN6) | \
PIN_PUPDR_PULLDOWN(GPIOD_PIN7) | \
PIN_PUPDR_PULLDOWN(GPIOD_PIN8) | \
PIN_PUPDR_PULLDOWN(GPIOD_PIN9) | \
PIN_PUPDR_PULLDOWN(GPIOD_PIN10) | \
PIN_PUPDR_PULLDOWN(GPIOD_PIN11) | \
PIN_PUPDR_PULLDOWN(GPIOD_PIN12) | \
PIN_PUPDR_PULLDOWN(GPIOD_PIN13) | \
PIN_PUPDR_PULLDOWN(GPIOD_PIN14) | \
PIN_PUPDR_PULLDOWN(GPIOD_PIN15))
#define VAL_GPIOD_ODR (PIN_ODR_HIGH(GPIOD_PIN0) | \
PIN_ODR_HIGH(GPIOD_PIN1) | \
PIN_ODR_HIGH(GPIOD_SDCARD_CMD) | \
PIN_ODR_HIGH(GPIOD_PIN3) | \
PIN_ODR_HIGH(GPIOD_PIN4) | \
PIN_ODR_HIGH(GPIOD_PIN5) | \
PIN_ODR_HIGH(GPIOD_PIN6) | \
PIN_ODR_HIGH(GPIOD_PIN7) | \
PIN_ODR_HIGH(GPIOD_PIN8) | \
PIN_ODR_HIGH(GPIOD_PIN9) | \
PIN_ODR_HIGH(GPIOD_PIN10) | \
PIN_ODR_HIGH(GPIOD_PIN11) | \
PIN_ODR_HIGH(GPIOD_PIN12) | \
PIN_ODR_HIGH(GPIOD_PIN13) | \
PIN_ODR_HIGH(GPIOD_PIN14) | \
PIN_ODR_HIGH(GPIOD_PIN15))
#define VAL_GPIOD_AFRL (PIN_AFIO_AF(GPIOD_PIN0, 0) | \
PIN_AFIO_AF(GPIOD_PIN1, 0) | \
PIN_AFIO_AF(GPIOD_SDCARD_CMD, 0) | \
PIN_AFIO_AF(GPIOD_PIN3, 0) | \
PIN_AFIO_AF(GPIOD_PIN4, 0) | \
PIN_AFIO_AF(GPIOD_PIN5, 0) | \
PIN_AFIO_AF(GPIOD_PIN6, 0) | \
PIN_AFIO_AF(GPIOD_PIN7, 0))
#define VAL_GPIOD_AFRH (PIN_AFIO_AF(GPIOD_PIN8, 0) | \
PIN_AFIO_AF(GPIOD_PIN9, 0) | \
PIN_AFIO_AF(GPIOD_PIN10, 0) | \
PIN_AFIO_AF(GPIOD_PIN11, 0) | \
PIN_AFIO_AF(GPIOD_PIN12, 0) | \
PIN_AFIO_AF(GPIOD_PIN13, 0) | \
PIN_AFIO_AF(GPIOD_PIN14, 0) | \
PIN_AFIO_AF(GPIOD_PIN15, 0))
I'll pull out my STM32F4 Discovery board and see if I can find a demo or test case that uses the SD2 driver successfully.