0%

HAL库 - GPIO的输入和输出

GPIO输出

常用函数

void HAL_GPIO_WritePin(GPIOx, GPIO_Pin, PinState)
作用:向IO写0/1
参数GPIOx:组编号,x取A到D。
参数GPIO_Pin:引脚编号,GPIO_PIN_0到15(GPIO_PIN_13)
参数PinState:要写的值,GPIO_PIN_RESET或GPIO_PIN_SET(写0或写1)。
例如,向PC13写0:HAL_GPIO_WritePin(GPIOC, GPIO_Pin_13, GPIO_PIN_RESET)

void HAL_Delay(uint32_t Delay)
作用:延时一段时间
参数Delay:要延迟的时间长度,单位ms。例如延迟0.5秒,就写500。

示例:闪灯实验

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/* USER CODE BEGIN WHILE */
while (1)
{
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_9,GPIO_PIN_SET);

HAL_Delay(500);

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_9,GPIO_PIN_RESET);

HAL_Delay(500);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}

GPIO输入

常用函数

GPIO_PinState HAL_GPIO_ReadPin(GPIOx,GPIO_PIN)
作用:读取IO的当前值。
参数GPIOx:组编号,x取A到D
参数GPIO_Pin:引脚编号,GPIO_PIN_0到15(例如GPIO_PIN_13)
返回值:IO引脚的读数,GPIO_PIN_RESET代表0,GPIO_PIN_SET代表1。

示例:按下按钮点亮灯,松开灭灯

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/* USER CODE BEGIN WHILE */
while (1)
{
if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_2) == GPIO_PIN_SET)//PE2按钮没有被按下
{
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_3,GPIO_PIN_SET);//熄灭PE3的灯
}
else//PE2按钮被按下
{
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_3,GPIO_PIN_RESET);//点亮PE3的灯
}

/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}