文章目录
-
- 一 .初始化GPIO
- (一)定义一个结构体变量GPIO_InitStruct,该变量类型是GPIO_InitTypeDef。
- (二).使能时钟。
- (三)配置引脚的初始化电平。
- (四).通过结构体变量配置具体的引脚。
- 二.GPIO相关寄存器
- 1.**GPIO端口模式寄存器(GPIOx_MODER)(x=A...I)**
- 2.**GPIO端口输出类型寄存器(GPIOx_OTYPER)(x = A...I)**
- 3.**GPIO端口上拉/下拉寄存器(GPIOx_PUPDR)(x=A...I)**
- 4.**GPIO端口输入数据寄存器(GPIOx_IDR)(x=A...I)**
- 5.**GPIO端口输出数据寄存器(GPIOx_ODR)(x=A...I)**
- 6.**GPIO端口置位/复位寄存器(GPIOx_BSRR)(x=A...I)**
- 7.**GPIO端口配置锁定寄存器(GPIOx_LCKR)(x=A...I)**
- 8.**GPIO复用功能低位寄存器(GPIOx_AFRL)(x=A...I)**
- 9.**GPIO复用功能高位寄存器(GPIOx_AFRH)(x=A...I)**
- 总结
前言:作为一个刚开始接触HALL库的小白,写了一点自己用hall库配置GPIO的方法以及GPIO的相关东西,供各位大佬看看。
废话不多说,进入主题。
一 .初始化GPIO
使用HAL库的优点在于不用手动添加初始化的代码了,CubeMX会根据软件设置自动生成,就在下图里面生成你想配置的GPIO及功能。
而这个就是自动生成的HAL库GPIO初始化代码:
static void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOH_CLK_ENABLE();
__HAL_RCC_GPIOD_CLK_ENABLE();
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15, GPIO_PIN_SET);
/*Configure GPIO pin : PD11 */
GPIO_InitStruct.Pin = GPIO_PIN_11;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
/*Configure GPIO pins : PD12 PD13 PD14 PD15 */
GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct)