OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3375|回复: 1

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

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2018-12-24
在线时间
0 小时
发表于 2018-12-24 18:56:39 | 显示全部楼层 |阅读模式
1金钱
最近在学习使用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;
    }
   }
  }
}
}





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




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10572
金钱
10572
注册时间
2017-2-18
在线时间
1914 小时
发表于 2018-12-24 21:52:29 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-22 23:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表