RISC-V MCU中文社区

【分享】 如何调用FPGA板上的按键资源

发表于 全国大学生集成电路创新创业大赛 2021-06-10 11:30:16
0
2264
0

大家好,我们团队的名字是灵芯,参赛编号是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();

        }

  }


喜欢0
用户评论
荣荣

荣荣 实名认证

懒的都不写签名

积分
问答
粉丝
关注
  • RV-STAR 开发板
  • RISC-V处理器设计系列课程
  • 培养RISC-V大学土壤 共建RISC-V教育生态
RV-STAR 开发板