发现Triton.zhang老大提供的uc/GUI例程没有触摸功能,所以将触摸功能加入,同时跑了几个uc/GUI的小例子,因为下周有好多考试,所以没有进行深入的扩展,不足之处还请见谅!顺便请假一周!不然要挂啦!
![](static/image/smiley/default/titter.gif)
要说uc /GUI的c文件,那叫一个多呀!为了方便编译,我利用IAR生成了静态连接库,uCGui_LM4F.a,这个和Ti官方库中的.a文件时一样的道理!
M4 Hanker这款开发板的触摸功能是靠AD采样的得到X Y ,坐标,这与我以前使用的带有触摸芯片的触摸屏不同,而UC/GUI 的例程中大都是通过SPI读取触摸芯片的数字量来直接得到X Y的坐标的!幸好我在Core文件夹下面看到了GUI_TOUCH_DriverAnalog.c这样一个文件,从它的名字就可以看出,它和模拟量有关系!!
进入函数里面我发现函数void GUI_TOUCH_Exec(void)是按键状态检测函数,于是我在其中添加了如下语句:
{
extern void
TouchTrigger(void);
TouchTrigger();
}
#else
{
Get_Touch_XY(&xPhys,&yPhys);
}
#if !GUI_TOUCH_SWAP_XY /* Is X/Y swapped ? */
x = xPhys;
y = yPhys;
#else
x = yPhys;
y = xPhys;
#endif
这段程序是我在网上看到一位高手这样处理的!事实证明很有效!道理其实很简单,就是把通过AD采到并处的X Y替换通过SPI口读到的数字量X Y!
其中TouchTrigger(void);为:
void TouchTrigger(void)
{
ADCProcessorTrigger(ADC0_BASE, 3);
}
AD0的通道3
而Get_Touch_XY(&xPhys,&yPhys);则为:
void Get_Touch_XY(int * x, int * y)
{
if(isPENUP ==1)
{
*x =*y =0;
}
else
{
*x = g_psSamples[g_cIndex];
*y = g_psSamples[g_cIndex+1];
}
}
看过这块板子的触摸驱动的同学应该猜到这两个函数所在的位置了吧!
我把它们放在了touch.c里面了,Triton.zhang老大提供的触摸驱动库很棒,我只是在里面加了这两个函数,然后获取其处理的X Y的值,这样触摸部分就搞定了!
然后我在上面跑了几个uc/GUI的小例子,本来想把他们做在一起,奈何考试临近,实在是没精力了,就等到有时间在搞吧!
值得一提的是,我把触屏扫描的程序放在了
void TickintHander(void)
{
GUI_TOUCH_Exec();
}
跟人感觉更加灵敏一些!或者尝试加入定时器中断,更好的效果有待于验证!
uC/OS+Uc/GUI的程序也调是一段时间,但是GUIDEMOmain()就是不执行下一步的显示!不知道是什么原因,等考试完了在继续搞吧!
[
本帖最后由 anananjjj 于 2012-6-10 21:52 编辑 ]