最近在学习使用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;
}
}
}
}
}
请教各位大佬如何处理,非常感谢。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>