金牌会员 
   
	- 积分
 - 1291
 
        - 金钱
 - 1291 
 
       - 注册时间
 - 2014-6-15
 
      - 在线时间
 - 144 小时
 
 
 
 | 
 
5金钱 
我首先单独在STM32上成功移植了UCOSII、UCGUI. 
而且裸机移植UCGUI的时候触摸屏已经正常工作,光标随触点移动了 
 
但是当我将UDOSII和UCGUI同时移植到STM32上之后, 
能模糊看到光标会闪烁 
但是不随触点移动, 这个是咋回事 
 
我建立了四个任务, 
 
void Task_LED(void *p_arg) 
{ 
  LED_GPIO_Config(); 
  OSTaskCreate(Task_LCD,(void *)0, 
               &lcd_task_stk[LCD_TASK_STK_SIZE - 1],LCD_TASK_PRIO); 
  OSTaskCreate(Task_Touch,(void *)0, 
               &Touch_task_stk[TOUCH_TASK_STK_SIZE - 1],TOUCH_TASK_PRIO); 
  OSTaskCreate(Task_Check_Touch,(void *)0, 
                &CheckTouch_task_stk[CHECK_TOUCH_TASK_STK_SIZE - 1],CHECK_TOUCH_TASK_PRIO); 
 
   p_arg=p_arg; 
    while(1) 
    { 
       
      LED1(ON); 
      OSTimeDlyHMSM(0,0,0,500); 
      LED1(OFF);  
       
      LED2(ON); 
      OSTimeDlyHMSM(0,0,0,500); 
      LED2(OFF); 
 
    }  
} 
 
 
void Task_Touch(void *p_arg){ 
    TP_Init(); 
   p_arg=p_arg; 
   while(1) 
    { 
      GUI_CURSOR_Show();  
      OSTimeDlyHMSM(0,0,0,100); 
 
    } 
 
} 
 
void Task_Check_Touch(void *p_arg){ 
  	  p_arg=p_arg; 
   while(1) 
    { 
      GUI_TOUCH_Exec(); 
      OSTimeDlyHMSM(0,0,0,20); 
 
    } 
 
} 
 
void Task_LCD(void *p_arg){ 
 GUI_Init(); 
 GUI_SetBkColor(GUI_WHITE); 
 
 GUI_SetColor(GUI_RED); 
 GUI_Clear(); 
   GUI_SetFont(&GUI_Font32B_ASCII); 
   GUI_DispStringAt("ColorBar - ", 0, 5); 
  	  p_arg=p_arg; 
   while(1) 
    { 
       GUI_DispStringAt("ColorBar - ", 0, 5);  
      OSTimeDlyHMSM(0,0,5,500); 
 
    } 
 
} 
 
此外,我改写了延时函数 
//延时nus 
//nus为要延时的us数.		    								    
void delay_us(u32 nus) 
{  
  OSTimeDlyHMSM(0,0,0,1);		//1MS代替us延时							     
} 
//延时nms 
//nms:要延时的ms数 
void delay_ms(u16 nms) 
{  
 OSTimeDlyHMSM(0,0,0,1); 
} 
	 
 
没有出现死机现象,但是光标就是不会随触点移动, 能看到光标在闪烁,  
 
 
这个是什么原因, 
这是源码 |   
 
 
最佳答案
查看完整内容[请看2#楼] 
 回复【2楼】 5498折戟沉沙 :
---------------------------------
误操作,直接发送了
很简单撒,因为你没有建立相应的任务进行重绘 
建立一个如下的任务 
while(1){ 
  GUI_Exec(); 
  OSTimeDlyHMSM(0,0,0,100);
}
另外你其他几个任务也有问题,修改如下
void Task_Touch(void *p_arg){
    TP_Init();
   p_arg=p_arg;
  GUI_CURSOR_Show( ... 
 
 
 
 
 
 
 |