- 简述:
- 每个通用 I/O 端口包括 4 个 32 位配置寄存器 ( GPIOx_MODER、 GPIOx_OTYPER、GPIOx_OSPEEDR 和 GPIOx_PUPDR) 、2 个 32 位数据寄存器(GPIOx_IDR 和 GPIOx_ODR)和 1 个 32 位置位/复位寄存器 (GPIOx_BSRR)。
- 所有 GPIO 都包括 1 个 32 位锁定寄存器 (GPIOx_LCKR) 和 2 个 32 位复用功能选择寄存器( GPIOx_AFRH 和 GPIOx_AFRL)。
- 特性:
- 输出状态:推挽或开漏 + 上拉/下拉
- 可为每个 I/O 选择不同的速度
- 输入状态:浮空、上拉/下拉、模拟
- 模拟功能
- 复用功能选择寄存器
- 引脚复用非常灵活,允许将 I/O 引脚用作 GPIO 或多种外设功能中的一种
- 功能描述:
- /*引脚功能描述:
GPIO_MODE_INPUT 输入浮空模式
GPIO_MODE_OUTPUT_PP 推挽输出
GPIO_MODE_OUTPUT_OD 开漏输出
GPIO_MODE_AF_PP 复用推挽输出
GPIO_MODE_AF_OD 复用开漏输出
GPIO_MODE_IT_RISING 外部中断,上升沿检测
GPIO_MODE_IT_FALLING 外部中断,下降沿检测
GPIO_MODE_IT_RISING_FALLING 外部中断,双沿触发检测
GPIO_MODE_EVT_RISING 外部事件模式,上升沿触发检测
GPIO_MODE_EVT_FALLING 外部事件模式,下降沿触发检测
GPIO_MODE_EVT_RISING_FALLING 外部事件模式,双沿触发检测
GPIO_MODE_ANALOG 模拟输入
引脚速度描述:
GPIO_SPEED_FREQ_LOW 低速
GPIO_SPEED_FREQ_MEDIUM 中等速度
GPIO_SPEED_FREQ_HIGH 快速
GPIO_SPEED_FREQ_VERY_HIGH 高速 */
- /*引脚功能描述:
- 硬件设计
- 软件初始化流程
- 打开相应GPIO时钟
- 引脚初始化:模式、上下拉、速度、引脚号;
- 对相应引脚预定义,方便操作; 简少代码量;
- 例程:
- led初始化:
void BSP_LED_Init(void) { GPIO_InitTypeDef GPIO_InitStruct; __HAL_RCC_GPIOB_CLK_ENABLE(); GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1; HAL_GPIO_Init(GPIOB,&GPIO_InitStruct); }
-
按键初始化:
GPIO_InitTypeDef GPIO_InitStruct; __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_GPIOH_CLK_ENABLE(); GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLDOWN; GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; GPIO_InitStruct.Pin = GPIO_PIN_0; HAL_GPIO_Init(GPIOA,&GPIO_InitStruct); GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; GPIO_InitStruct.Pin = GPIO_PIN_2 | GPIO_PIN_3; HAL_GPIO_Init(GPIOH,&GPIO_InitStruct); GPIO_InitStruct.Pin = GPIO_PIN_13; HAL_GPIO_Init(GPIOC,&GPIO_InitStruct);
- led初始化:
- 总结:
- 无
【8】、STM32F767——————>GPIO之输入/输出
猜你喜欢
转载自blog.csdn.net/Linux_ARM9/article/details/104510875
今日推荐
周排行