STM32F4 ST官方评估板笔记(2) - 通用io结构体设置

通用io结构体设置

 

①typedef struct

{

  uint32_t  GPIO_Pin;                      //针脚

                                        This parameter can be any value of @ref GPIO_pins_define */

  GPIOMode_TypeDef  GPIO_Mode;      //模式

                                       This parameter can be a value of @ref GPIOMode_TypeDef */

  GPIOSpeed_TypeDef  GPIO_Speed;         //速度

                                       This parameter can be a value of @ref GPIOSpeed_TypeDef */

  GPIOOType_TypeDef  GPIO_OType;           //输出物理模式 推挽or 开漏

                                       This parameter can be a value of @ref GPIOOType_TypeDef */

  GPIOPuPd_TypeDef  GPIO_PuPd;        //上下拉电阻设置

                                       This parameter can be a value of @ref GPIOPuPd_TypeDef */

}GPIO_InitTypeDef;     

 

Pin选择:

#define GPIO_Pin_0                 ((uint16_t)0x0001)  /* Pin 0 selected */

#define GPIO_Pin_1                 ((uint16_t)0x0002)  /* Pin 1 selected */

#define GPIO_Pin_2                 ((uint16_t)0x0004)  /* Pin 2 selected */

#define GPIO_Pin_3                 ((uint16_t)0x0008)  /* Pin 3 selected */

#define GPIO_Pin_4                 ((uint16_t)0x0010)  /* Pin 4 selected */

#define GPIO_Pin_5                 ((uint16_t)0x0020)  /* Pin 5 selected */

#define GPIO_Pin_6                 ((uint16_t)0x0040)  /* Pin 6 selected */

#define GPIO_Pin_7                 ((uint16_t)0x0080)  /* Pin 7 selected */

#define GPIO_Pin_8                 ((uint16_t)0x0100)  /* Pin 8 selected */

#define GPIO_Pin_9                 ((uint16_t)0x0200)  /* Pin 9 selected */

#define GPIO_Pin_10                ((uint16_t)0x0400)  /* Pin 10 selected */

#define GPIO_Pin_11                ((uint16_t)0x0800)  /* Pin 11 selected */

#define GPIO_Pin_12                ((uint16_t)0x1000)  /* Pin 12 selected */

#define GPIO_Pin_13                ((uint16_t)0x2000)  /* Pin 13 selected */

#define GPIO_Pin_14                ((uint16_t)0x4000)  /* Pin 14 selected */

#define GPIO_Pin_15                ((uint16_t)0x8000)  /* Pin 15 selected */

#define GPIO_Pin_All               ((uint16_t)0xFFFF)  /* All pins selected */

 

Mode选择:

typedef enum

{

  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 */

}GPIOMode_TypeDef;  

 

Speed速度设置:

typedef enum

{

  GPIO_Speed_2MHz   = 0x00, /*!< Low speed */

  GPIO_Speed_25MHz  = 0x01, /*!< Medium speed */

  GPIO_Speed_50MHz  = 0x02, /*!< Fast speed */

  GPIO_Speed_100MHz = 0x03  /*!< High speed on 30 pF (80 MHz Output max speed on 15 pF) */

}GPIOSpeed_TypeDef;

 

OType输出物理性质设置:

typedef enum

{

  GPIO_OType_PP = 0x00,

  GPIO_OType_OD = 0x01

}GPIOOType_TypeDef;

 

PuPd上下拉电阻设置:

typedef enum

{

  GPIO_PuPd_NOPULL = 0x00,

  GPIO_PuPd_UP      = 0x01,

  GPIO_PuPd_DOWN  = 0x02

}GPIOPuPd_TypeDef;

 

②开相关寄存器时钟:(注意开syscfg在APB2)

void RCC_AHB1PeriphClockCmd(uint32_t RCC_AHB1Periph, FunctionalState NewState);

void RCC_AHB2PeriphClockCmd(uint32_t RCC_AHB2Periph, FunctionalState NewState);

void RCC_AHB3PeriphClockCmd(uint32_t RCC_AHB3Periph, FunctionalState NewState);

void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);

void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);

 

AHB1首位形参:

RCC_AHB1Periph_GPIOA:        GPIOA clock

RCC_AHB1Periph_GPIOB:        GPIOB clock

RCC_AHB1Periph_GPIOC:        GPIOC clock

RCC_AHB1Periph_GPIOD:        GPIOD clock

RCC_AHB1Periph_GPIOE:        GPIOE clock

RCC_AHB1Periph_GPIOF:        GPIOF clock

RCC_AHB1Periph_GPIOG:        GPIOG clock

RCC_AHB1Periph_GPIOG:        GPIOG clock

RCC_AHB1Periph_GPIOI:        GPIOI clock

RCC_AHB1Periph_CRC:          CRC clock

RCC_AHB1Periph_BKPSRAM:      BKPSRAM interface clock

RCC_AHB1Periph_CCMDATARAMEN: CCM data RAM interface clock

RCC_AHB1Periph_DMA1:         DMA1 clock

RCC_AHB1Periph_DMA2:         DMA2 clock

RCC_AHB1Periph_ETH_MAC:      Ethernet MAC clock

RCC_AHB1Periph_ETH_MAC_Tx:   Ethernet Transmission clock

RCC_AHB1Periph_ETH_MAC_Rx:   Ethernet Reception clock

RCC_AHB1Periph_ETH_MAC_PTP: Ethernet PTP clock

RCC_AHB1Periph_OTG_HS:       USB OTG HS clock

RCC_AHB1Periph_OTG_HS_ULPI: USB OTG HS ULPI clock

 

AHB2首位形参:

RCC_AHB2Periph_DCMI:    DCMI clock

RCC_AHB2Periph_CRYP:    CRYP clock

RCC_AHB2Periph_HASH:    HASH clock

RCC_AHB2Periph_RNG:     RNG clock

RCC_AHB2Periph_OTG_FS: USB OTG FS clock

 

AHB3首位形参:

RCC_AHBPeriph: specifies the AHB3 peripheral to gates its clock.

This parameter must be: RCC_AHB3Periph_FSMC

 

APB1首位形参:

RCC_APB1Periph_TIM2:    TIM2 clock

RCC_APB1Periph_TIM3:    TIM3 clock

RCC_APB1Periph_TIM4:    TIM4 clock

RCC_APB1Periph_TIM5:    TIM5 clock

RCC_APB1Periph_TIM6:    TIM6 clock

RCC_APB1Periph_TIM7:    TIM7 clock

RCC_APB1Periph_TIM12: TIM12 clock

RCC_APB1Periph_TIM13:   TIM13 clock

RCC_APB1Periph_TIM14:   TIM14 clock

RCC_APB1Periph_WWDG:   WWDG clock

RCC_APB1Periph_SPI2:    SPI2 clock

RCC_APB1Periph_SPI3:    SPI3 clock

RCC_APB1Periph_USART2: USART2 clock

RCC_APB1Periph_USART3: USART3 clock

RCC_APB1Periph_UART4:   UART4 clock

RCC_APB1Periph_UART5:   UART5 clock

RCC_APB1Periph_I2C1:    I2C1 clock

RCC_APB1Periph_I2C2:    I2C2 clock

RCC_APB1Periph_I2C3:    I2C3 clock

RCC_APB1Periph_CAN1:    CAN1 clock

RCC_APB1Periph_CAN2:    CAN2 clock

RCC_APB1Periph_PWR:     PWR clock

RCC_APB1Periph_DAC:     DAC clock

 

APB2首位形参:

RCC_APB2Periph_TIM1:   TIM1 clock

RCC_APB2Periph_TIM8:    TIM8 clock

RCC_APB2Periph_USART1: USART1 clock

RCC_APB2Periph_USART6: USART6 clock

RCC_APB2Periph_ADC1:    ADC1 clock

RCC_APB2Periph_ADC2:   ADC2 clock

RCC_APB2Periph_ADC3:   ADC3 clock

RCC_APB2Periph_SDIO:    SDIO clock

RCC_APB2Periph_SPI1:    SPI1 clock

RCC_APB2Periph_SYSCFG: SYSCFG clock

RCC_APB2Periph_TIM9:    TIM9 clock

RCC_APB2Periph_TIM10:   TIM10 clock

RCC_APB2Periph_TIM11:   TIM11 clock

 

GPIO_Init(GPIOx ,&GPIO_InitStructure);                 //与①共同协作,port与结构体为形参

 

控制io逻辑的方法:

GPIOx->BSRRL = GPIO_Pin_xx;     //置1

GPIOx->BSRRH = GPIO_Pin_xx; //置0

GPIOx->ODR ^= GPIO_Pin_xx; //翻转

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值