cancel
Showing results for 
Search instead for 
Did you mean: 

STM32F4 StdPeriph GPIO_MODE

Beescloud
Associate

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!
1 REPLY 1
TDK
Guru

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.

If you feel a post has answered your question, please click "Accept as Solution".