02基于stm32的HAL库的按键控制led灯的程序分析

两个程序

1初始化GPIO

        1.1 打开时钟 

        __HAL_RCC_G{IOA_CLK_ENABLE();

        1.2调用GPIO初始化函数

GPIO采用浮空输入模式时,STM32的引脚状态是不确定的,此时STM32得到的电平状态完全取决于GPIO外部的电平状态,所以说在GPIO外部的引脚悬空时,读取该端口的电平状态是个不确定的值。多用于外部按键输入,

由原理图可知默认高电平,按下就是低电平

void key_init(void)
{
    GPIO_InitTypeDef gpio_initstruct;
    __HAL_RCC_GPIOA_CLK_ENABLE();
    gpio_initstruct.Pin   = GPIO_Pin_0;//由原理图可知,key1在PA0口
    gpio_initstruct.Mode  = GPIO_Mode_INPUT;
    gpio_initstruct.Pull  = GPIO_PULLUP;//由原理图可知默认高电平,按下就是低电平
    gpio_initstruct.Speed = GPIO_SPEED_FREQ_HIGH;
    HAL_GPIO_init(GPIOA,&gpio_initstruct);
}

2按键扫描函数

检测案件是否按下HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)

        消抖

        再将判断按键是否按下 GPIO_PIN_RESET

        如果确定按键按下,等待松开

        return 1和0 是为了形成状态位方便主函数执行程序

uint8_t key_scan(void)
{
    if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) == GPIO_PIN_RESET)
    {
        delay_ms(20);
    if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) == GPIO_PIN_RESET){
        return 1;//形成状态位
}
}
    return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值