大家好,我们团队的名字是灵芯,参赛编号是CICC2959。 今天主要介绍一下我们团队是如何调用FPGA板上的按键资源的。
首先,初始化按键模块:
具体初始化函数调用如下:
其次,定义按键扫描函数:
u8 KEY_Scan(u8 mode)
{
static u8 key_up=1;//按键按松开标志
if( mode )key_up=1; //支持连按
if(key_up &&((gpio_read(GPIOA, SOC_BUTTON_U_GPIO_MASK) == SOC_BUTTON_U_GPIO_MASK)||
( gpio_read(GPIOA, SOC_BUTTON_L_GPIO_MASK) == SOC_BUTTON_L_GPIO_MASK)||
( gpio_read(GPIOA, SOC_BUTTON_C_GPIO_MASK) == SOC_BUTTON_C_GPIO_MASK)||
( gpio_read(GPIOA, SOC_BUTTON_R_GPIO_MASK) == SOC_BUTTON_R_GPIO_MASK)||
( gpio_read(GPIOA, SOC_BUTTON_D_GPIO_MASK) == SOC_BUTTON_D_GPIO_MASK)))
{
delay_1ms(10);//去抖动
key_up=0;
if (gpio_read(GPIOA, SOC_BUTTON_U_GPIO_MASK) == SOC_BUTTON_U_GPIO_MASK)
return 1;
else if(gpio_read(GPIOA, SOC_BUTTON_L_GPIO_MASK) == SOC_BUTTON_L_GPIO_MASK)
return 2;
else if(gpio_read(GPIOA, SOC_BUTTON_C_GPIO_MASK) == SOC_BUTTON_C_GPIO_MASK)
return 3;
else if(gpio_read(GPIOA, SOC_BUTTON_R_GPIO_MASK) == SOC_BUTTON_R_GPIO_MASK)
return 4;
else if(gpio_read(GPIOA, SOC_BUTTON_D_GPIO_MASK) == SOC_BUTTON_D_GPIO_MASK)
return 5;
}
else if((gpio_read(GPIOA, SOC_BUTTON_U_GPIO_MASK) == 0)&&
(gpio_read(GPIOA, SOC_BUTTON_L_GPIO_MASK) == 0)&&
(gpio_read(GPIOA, SOC_BUTTON_C_GPIO_MASK) == 0)&&
(gpio_read(GPIOA, SOC_BUTTON_R_GPIO_MASK) == 0)&&
(gpio_read(GPIOA, SOC_BUTTON_D_GPIO_MASK) == 0))
key_up=1;
return 0;// 无按键按下
}
定义以后就可以直接在main()函数中使用了
while(1)
{
key_num=KEY_Scan(0);
if(key_num==1)
{
key_num=0;
Add_FR();//录指纹
}
if(key_num==3)
{
key_num=0;
Cmp_FR();
}
if(key_num==5)
{
key_num=0;
printf("%s\n","请按手指");
// press_FR();
}
}