发 帖  
原厂入驻New
[问答]

触摸屏卡死问题如何解决

158 触摸屏
分享
void EXti15_10_IRQHandler(void)
{         
//先开始初始化IO口
    RCC->APB2ENR|=1<<2;    //PA时钟使能
RCC->APB2ENR|=1<<0;    //开启辅助时钟
RCC->APB2ENR&=~(1<<12);      //SPI1时钟失能         
GPIOA->CRL&=0X0F00FFFF;//PA457
GPIOA->CRL|=0X30330000;//
GPIOA->CRL&=0XF0FFFFFF;//PA6
GPIOA->CRL|=0X08000000;//
GPIOA->ODR|=0XF0;
//中断处理
  
Convert_Pos();
printf("x is %d",Pen_Point.X0);
    printf("y is %d",Pen_Point.Y0);
    IF(Pen_Point.X0>=70-16&&en_Point.X0<=70+16&&en_Point.Y0>=270-16&&en_Point.Y0<=270+16)flag='L';
if(Pen_Point.X0>=120-16&&en_Point.X0<=120+16&&en_Point.Y0>=270-16&&en_Point.Y0<=270+16)flag='P';
if(Pen_Point.X0>=170-16&&en_Point.X0<=170+16&&en_Point.Y0>=270-16&&en_Point.Y0<=270+16)flag='R';
if(Pen_Point.X0>=20-10&&en_Point.X0<=20+10&&Pen_Point.Y0>=40-10&&Pen_Point.Y0<=40+10)flag='+';
if(Pen_Point.X0>=20-10&&Pen_Point.X0<=20+10&&Pen_Point.Y0>=85-10&&Pen_Point.Y0<=85+10)flag='-';

delay_ms(400); //相当于消钭
//恢复端口设置
RCC->APB2ENR|=1<<2;       //PORTA时钟使能   
    RCC->APB2ENR|=1<<12;      //SPI1时钟使能
    GPIOA->CRL&=0X000FFFFF;
    GPIOA->CRL|=0XBBB00000;//PA5.6.7复用      
    GPIOA->ODR|=0X7<<5;    //PA5.6.7上拉
SPI1->CR1|=1<<6; //SPI设备使能
  
RCC->APB2ENR|=1<<3;//先使能外设IO PORTB时钟         
GPIOB->CRL&=0X00FFFFFF;//PB6/7 推挽输出
GPIOB->CRL|=0X33000000;   
GPIOB->ODR|=3<<6;     //PB6,7 输出高
            
EXTI->PR=1<<13;  //清除LINE1上的中断标志位
}
以上代码基本思路是:进入中断后,首先关闭spi(触摸屏占用spi口但不用spi通信,所以要先关闭,避免影响,然后在出中断前在使能spi),然后判断位置,根据不同位置
写不同的flag,出中断前使能spi。
现在问题是:触摸的时候经常会卡死,就是触摸要很有技术(一点就要放开就没事)
各位高手解答一下啊
在线等
0
2020-7-21 08:01:10   评论 分享淘帖 邀请回答
3个回答
你在中断里面放这么多代码干嘛?不是等死嘛....
2020-7-21 11:17:44 评论

举报

为什么中断里不能放那么多代码,有什么问题?
2020-7-21 11:36:30 评论

举报

触摸屏这东西要不要消抖的?
2020-7-21 11:42:20 评论

举报

只有小组成员才能发言,加入小组>>

86个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

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