多按键触发

多按键都触发

比如:按键1、按键2、按键3都触发动作--亮灯,思路是每个按键都触发中断,然后在中断里实现亮灯操作

        过程:我这里直接定义了按键的数量为三个(改成你的按键数量)

                :#define CONFIG_ELEMENT_NUM 6

       1: 按键io初始化打开每个按键的中断:

static void _button_init(void) 
{
    uint8_t i = 0;
    GPIO_InitTypeDef gpio_init[ELEMENT_NUM];
    for (i = 0; i < ELEMENT_NUM; i++) {
        gpio_init[i].GPIO_Pin   = gpio_key_map[i]%8;
        gpio_init[i].GPIO_Mode  = GPIO_Mode_In_Up;
        gpio_init[i].GPIO_Speed = GPIO_Speed_10MHz;
        GPIO_Init((GPIO_TypeDef *)(gpio_key_map[i]/8), &gpio_init[i]);
        zero_gpio_init();
        /*Interrupt configuration*/
        GPIO_SetInterrupt((GPIO_TypeDef *)(gpio_key_map[i]/8), gpio_key_map[i]%8, Fall_Interrupt|Rising_Interrupt);
    }
	NVIC_Configuration(gpio_IRQn, 1, ENABLE);
}

        2:在中断处理函数里实现操作:

void GPIO_IRQHandler(uint32_t unix_time)
{      
    uint8_t i = 0;//0 1 2 3 4 5  
    for(i = 0; i < ELEMENT_NUM; i++)
    {
        uint8_t val = GPIO_ReadDataBit((GPIO_TypeDef *)(gpio_key_map[i]/8), gpio_key_map[i]%8);//读取按键io值
        if(val == 0)
        {
                rex_gpio_set(gpio_light[0], 1);//,设置灯的亮灭--开灯
        }
    }
}       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值