Skip to main content
Visitor II
January 24, 2024
Question

STM32F4 StdPeriph GPIO_MODE

  • January 24, 2024
  • 1 reply
  • 1172 views

i use nucleo-f446ze learning how to use STM32F4 stdperiph,but in STM32F4XX_GPIO.h,GPIO_MODE only have 4 mode,

GPIO_Mode_IN = 0x00, /*!< GPIO Input Mode */
GPIO_Mode_OUT = 0x01, /*!< GPIO Output Mode */
GPIO_Mode_AF = 0x02, /*!< GPIO Alternate function Mode */
GPIO_Mode_AN = 0x03 /*!< GPIO Analog Mode */

in STM32F10_GPIO.h,have 8 mode

GPIO_Mode_AIN = 0x0,
GPIO_Mode_IN_FLOATING = 0x04,
GPIO_Mode_IPD = 0x28,
GPIO_Mode_IPU = 0x48,
GPIO_Mode_Out_OD = 0x14,
GPIO_Mode_Out_PP = 0x10,
GPIO_Mode_AF_OD = 0x1C,
GPIO_Mode_AF_PP = 0x18
 
if i want to use PP in the STM32F4,i should use gpio_pupd?can explain why different design? 
Best regards!
    This topic has been closed for replies.

    1 reply

    Super User
    January 24, 2024

    push-pull vs open-drain is specified in a different field. Use GPIO_OType_PP in the GPIO_OType field to specify push-pull.

    /** 
     * @brief GPIO Init structure definition 
     */ 
    typedef struct
    {
     uint32_t GPIO_Pin; /*!< Specifies the GPIO pins to be configured.
     This parameter can be any value of @ref GPIO_pins_define */
    
     GPIOMode_TypeDef GPIO_Mode; /*!< Specifies the operating mode for the selected pins.
     This parameter can be a value of @ref GPIOMode_TypeDef */
    
     GPIOSpeed_TypeDef GPIO_Speed; /*!< Specifies the speed for the selected pins.
     This parameter can be a value of @ref GPIOSpeed_TypeDef */
    
     GPIOOType_TypeDef GPIO_OType; /*!< Specifies the operating output type for the selected pins.
     This parameter can be a value of @ref GPIOOType_TypeDef */
    
     GPIOPuPd_TypeDef GPIO_PuPd; /*!< Specifies the operating Pull-up/Pull down for the selected pins.
     This parameter can be a value of @ref GPIOPuPd_TypeDef */
    }GPIO_InitTypeDef;

     

    Unless you have a convincing argument, it would be more beneficial to use the HAL libraries rather than the old standard peripheral libraries, which will not be updated and do not support newer hardware.