程序的流程如上图所示。
编写完程序,测试发现,当初始化函数中将等待中断设置为等待按键按下中断时(enter_wait_pen_down_mode),上电后显示的是pen dowm,但实际上触摸屏并没有被按下。这时候程序会进入等待抬起状态不会检测到按下,此时需要进行一遍按下抬起的操作后续的检测才能正常,只有设置为等待按键抬起时(enter_wait_pen_up_mode),上电后显示的才是pen up,这时候程序会进入等待按键按下的状态,可以正常的检测。
设置为等待按键抬起时,调试信息如下。
设置为等待按键按下时,调试信息如下。
奇怪的是,视频和例程中的调试信息如下,设置的是等待按键按下模式(enter_wait_pen_down_mode)。
根据2440的芯片手册,可以根据ADCDATA0寄存器的bit15判断是按下还是抬起了。
可以看到,例程中的调试信息显示ADCDAT0的值为0x3000,它的bit15是0,但却显示pen up,检查配置发现例程配置与测试程序配置相同,从调试信息也能看出,寄存器的值相同。但是为什么例程会显示pen up,测试程序却显示pen dowm,暂时没有想明白原因,目前的解决方法是初始化时设置为等待按键抬起模式(enter_wait_pen_up_mode),这样程序可以正常运行。