STM32之GPIO学习

每个通用 I/O 端口包括 **4 个 32 位配置寄存器**( GPIOx_MODER、 GPIOx_OTYPER、
GPIOx_OSPEEDR 和 GPIOx_PUPDR)、 **2 个 32 位数据寄存器**(GPIOx_IDR 和
GPIOx_ODR)、 **1 个 32 位置位/复位寄存器** (GPIOx_BSRR)、 1 个 32 位**锁定寄存器**
(GPIOx_LCKR) 和 2 个 32 位**复用功能选择寄存器**( GPIOx_AFRH 和 GPIOx_AFRL)。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
GPIO初始化

  GPIO_InitTypeDef  GPIO_InitStructure;
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//使能GPIOF时钟
  //GPIOF9,F10初始化设置
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;//LED0和LED1对应IO口
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉
  GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化GPIO
	

在这里插入图片描述

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;

在这里插入图片描述

typedef enum
{
    
     
  GPIO_OType_PP = 0x00, 	//推挽输出
  GPIO_OType_OD = 0x01 		//开漏输出
}GPIOOType_TypeDef;
#define IS_GPIO_OTYPE(OTYPE) (((OTYPE) == GPIO_OType_PP) || ((OTYPE) == GPIO_OType_OD))


在这里插入图片描述

typedef enum
{
    
     
  GPIO_Low_Speed     = 0x00, /*!< Low speed    */
  GPIO_Medium_Speed  = 0x01, /*!< Medium speed */
  GPIO_Fast_Speed    = 0x02, /*!< Fast speed   */
  GPIO_High_Speed    = 0x03  /*!< High speed   */
}GPIOSpeed_TypeDef;

在这里插入图片描述

typedef enum
{
    
     
  GPIO_PuPd_NOPULL = 0x00,
  GPIO_PuPd_UP     = 0x01,
  GPIO_PuPd_DOWN   = 0x02
}GPIOPuPd_TypeDef;
#define IS_GPIO_PUPD(PUPD) (((PUPD) == GPIO_PuPd_NOPULL) || ((PUPD) == GPIO_PuPd_UP) || \
                            ((PUPD) == GPIO_PuPd_DOWN))

在这里插入图片描述
GPIO_ABCDEFG+PH0+PH1
在这里插入图片描述
IO口有
在这里插入图片描述
四种输入输出模式解读:
https://blog.csdn.net/qq_43033547/article/details/88759002
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43033547/article/details/98037635