完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我首先单独在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); } 没有出现死机现象,但是光标就是不会随触点移动, 能看到光标在闪烁, 这个是什么原因, 这是源码 STM32_UCGUI_UCOSII成功.zip (2.85 MB ) |
|
相关推荐
9个回答
|
|
误操作,直接发送了 很简单撒,因为你没有建立相应的任务进行重绘 建立一个如下的任务 while(1){ GUI_Exec(); OSTimeDlyHMSM(0,0,0,100); } 另外你其他几个任务也有问题,修改如下 void Task_Touch(void *p_arg){ TP_Init(); p_arg=p_arg; GUI_CURSOR_Show(); //开启即可,不必放入while中,故该任务可与其他任务合并 while(1) { 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; GUI_DispStringAt("ColorBar - ", 0, 5); //开启即可,不必放入while中,故该任务可与其他任务合并 //GUI实际应用中,这些显示字符串的程序一般都是放在DIALOG的用户级回调函数响应WM_PAINT消息处 while(1) { OSTimeDlyHMSM(0,0,5,500); } } |
|
|
|
|
|
|
|
//如下是DIALOG用户级回调函数对WM_PAINT消息的处理,可在此处插入显示在DIALOG的字符
void _cb(WM_MESSAGE *pMsg) { switch(pMsg->MsgId){ case WM_PAINT: //在此处插入那些显示字符、画线、画圆等的代码 break; ...... } } |
|
|
|
|
|
|
|
记得加延时,见3楼完整的回复
|
|
|
|
好的 谢谢,慢慢摸索中
|
|
|
|
楼主,我是新手,我想移植ucgui,这个怎么入门啊,你们当初学的时候是只看文档,还是有视频啊,求助啊
|
|
|
|
其实移植UCGUI很简单的,只要你准备好屏幕驱动,就改几个地方就行了
这是我的博客,转载的有相关的文章 http://blog.csdn.net/niepangu/article/details/38150447 移植好之后,就根据应用需求做相应的开发 |
|
|
|
嗯,谢谢楼主
|
|
|
|
只有小组成员才能发言,加入小组>>
793 浏览 0 评论
1152 浏览 1 评论
2528 浏览 5 评论
2861 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2711 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1071浏览 3评论
194浏览 2评论
456浏览 2评论
369浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
454浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 23:14 , Processed in 1.250687 second(s), Total 93, Slave 74 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号