HAL库中电平输入函数
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef*GPIOx,uint16_t GPIO_Pin);
例:判断PC13引脚的输入信号,若为高电平,则将PB9引脚控制的LED灯的开关状态切换。
if(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13)==GPIO_PIN_SET )
{
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_9);
}
STM32CubeMX配置
基础配置和之前一样,有一点不同得是这里需要把PB1和PC13设置为上拉模式
时钟设置为
然后生成代码
编辑代码
第一个按键_第一种方式
void Delay(unsigned int t)
{
while(t--);
}
void Scan_Keys()
{
if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13)==GPIO_PIN_RESET)
{
Delay(1000);
if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13)==GPIO_PIN_RESET)
{
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_9);
while(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13)==GPIO_PIN_RESET);
}
}
}
第一个按键_第二种方法
void Delay(unsigned int t)
{
while(t--);
}
void Scan_Keys()
{
if(KEY2 == 0)
{
Delay(1000);
if(KEY2 == 0)
{
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_9);
while(KEY2 == 0);
}
}
}
第二个按键_采用第二种控制方法
在函数Scan_Keys()中添加一下代码
if(KEY3 == 0)
{
Delay(1000);
if(KEY3 == 0)
{
while(KEY3 == 0);
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_8);
}
}
第三个按键_采用第二种控制方法
在函数Scan_Keys()中添加一下代码
if(KEY4 == 0)
{
Delay(1000);
if(KEY4 == 0)
{
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8|GPIO_PIN_9,0);
while(KEY4 == 0);
}
}
在代码中配置引脚
进入到void MX_GPIO_Init(void)函数中添加需要配置的引脚