新手上路
- 积分
- 28
- 金钱
- 28
- 注册时间
- 2019-8-13
- 在线时间
- 3 小时
|
移植UCOSiii之前是可以用的,触摸屏的画线功能。
void ctp_test(void)
{
u8 t=0;
u8 i=0;
u16 lastpos[5][2];
while(1)
{
tp_dev.scan(0);
for(t=0;t<CT_MAX_TOUCH;t++)
{
if((tp_dev.sta)&(1<<t))
{
if(tp_dev.x[t]<lcddev.width&&tp_dev.y[t]<lcddev.height)
{
if(lastpos[t][0]==0XFFFF)
{
lastpos[t][0] = tp_dev.x[t];
lastpos[t][1] = tp_dev.y[t];
}
lcd_draw_bline(lastpos[t][0],lastpos[t][1],tp_dev.x[t],tp_dev.y[t],2,POINT_COLOR_TBL[t]);//画线函数
lastpos[t][0]=tp_dev.x[t];
lastpos[t][1]=tp_dev.y[t];
if(tp_dev.x[t]>(lcddev.width-24)&&tp_dev.y[t]<16)
{
Load_Drow_Dialog();//清屏函数
}
}
}else lastpos[t][0]=0XFFFF;
}
delay_ms(5);
}
}
int main(void)
{
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
LCD_Init();
tp_dev.init();
delay_ms(50);
Load_Drow_Dialog();
ctp_test();//获取坐标并画线函数
}
移植之后单独测试UCOSIII是可以用的,任务2、任务3都可以打印,任务1就不行。任务1是将 ctp_test();移植到while里面
//任务1,运行画线函数,屏幕没有反应!
void led0_task(void *p_arg)
{
OS_ERR err;
u8 t=0;
u16 lastpos[5][2];
CPU_SR_ALLOC();
p_arg = p_arg;
while(1)
{
OS_CRITICAL_ENTER();
tp_dev.scan(0);
for(t=0;t<CT_MAX_TOUCH;t++)//获取5个坐标
{
if((tp_dev.sta)&(1<<t))
{
if(tp_dev.x[t]<lcddev.width&&tp_dev.y[t]<lcddev.height)
{
if(lastpos[t][0]==0XFFFF)
{
lastpos[t][0] = tp_dev.x[t];
lastpos[t][1] = tp_dev.y[t];
}
lcd_draw_bline(lastpos[t][0],lastpos[t][1],tp_dev.x[t],tp_dev.y[t],2,POINT_COLOR_TBL[t]);//»-Ïß
lastpos[t][0]=tp_dev.x[t];
lastpos[t][1]=tp_dev.y[t];
if(tp_dev.x[t]>(lcddev.width-24)&&tp_dev.y[t]<16)
{
Load_Drow_Dialog();//Çå3y
}
}
}else lastpos[t][0]=0XFFFF;
}
OS_CRITICAL_EXIT();
OSTimeDlyHMSM(0,0,0,5,OS_OPT_TIME_HMSM_STRICT,&err);
}
}
//任务2,只打印task2,执行成功!
void led1_task(void *p_arg)
{
OS_ERR err;
p_arg = p_arg;
while(1)
{
printf("task2 \n");
OSTimeDlyHMSM(0,0,4,0,OS_OPT_TIME_HMSM_STRICT,&err); //Ñóê±500ms
}
}
//任务3,只打印task3, 执行成功!
void float_task(void *p_arg)
{
CPU_SR_ALLOC();
while(1)
{
OS_CRITICAL_ENTER();
printf("task3 \n");
OS_CRITICAL_EXIT();
delay_ms(5000);
}
}
|
-
|