paj7620手势识别传感器 怎么在中断输出后读取

2019-07-21 06:31发布

最近在学习使用PAJ7620这个手势识别模块,轮询模式下工作正常。
    while(1){
         readgs();
    }

在stm32L151c8t6中设置PA1口为中断输入后,也可以用PAJ7620触发PA1的中断。如下面的程序。
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){
// unsigned char status1;
if(GPIO_Pin==GPIO_PIN_1){
  Ledflashnum(2);
//  readgs();
}

}




但是。。。。但是。。。。但是。。。。

如果把读取手势这段函数放到PA1 IO 的中断回调函数中,则PAJ7620既无法触发中断,更没法读取手势编码。

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){
// unsigned char status1;
if(GPIO_Pin==GPIO_PIN_1){
  Ledflashnum(2);
  readgs();
}

}





读取手势编码函数如下。
void readgs(void)
{
unsigned char status1;
unsigned int gesture_data1;
unsigned char data1[2];
paj7620u2_selectBank(BANK0);//切换回BANK0寄存器区域
status1 = GS_Read_nByte(PAJ_GET_INT_FLAG1,2,&data1[0]);//读取手势状态
{
  if(!status1)
  {
   gesture_data1 =(u16)data1[1]<<8 | data1[0];
   if(gesture_data1)
   {
    switch(gesture_data1)
    {
     case GES_UP:         Ledflashnum(1); break; //向上
     case GES_DOWM:        Ledflashnum(2); break; //向下
     case GES_LEFT:        Ledflashnum(3); break; //向左
     case GES_RIGHT:        Ledflashnum(4); break; //向右
     case GES_FORWARD:      Ledflashnum(5); break; //向前
     case GES_BACKWARD:     Ledflashnum(6); break; //向后
     case GES_CLOCKWISE:     Ledflashnum(7); break; //顺时针
     case GES_COUNT_CLOCKWISE:   Ledflashnum(8); break; //逆时针
     case GES_WAVE:           Ledflashnum(9); break; //挥动
     default:            break;
    }
   }
  }
}
}





请教各位大佬如何处理,非常感谢。



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。