完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我建立一个窗口,窗口有回调函数,回调函数在WM_PAINT 中显示数字,可是执行一段时间就进入了hardfault_handler(),这是怎么回事呢?
任务: void Task(void *p_arg){while(1){hWin =WM_CreateWindow(0,0,XSIZE_PHYS,YSIZE_PHYS-YSIZE_PHYS/12,WM_CF_SHOW,caback,0);GUI_Exec();WM_DeleteWindow(hWin); } } 回到函数: void caback(WM_MESSAGE *pMsg){switch (pMsg->MsgId) { case WM_PAINT:cnt++;GUI_DispDecAt(cnt,10,470,10);WM_Exec();break;}WM_DefaultProc(pMsg);} 这个过程就是这样的, cnt 是一个全局变量,板子上电之后开始计数显示,但是当cnt = 41 时就停住了,仿真时进入了硬件错误,我开始以为是内存哪里操作问题,可是这个点代码根本没问题呀,也没发现,不知道回到函数的 WM_PAINT 到底怎么执行的,求助,搞了好久了都没解决~~~~(>_<)~~~~ |
|
相关推荐
6个回答
|
|
|
|
注释掉void Task(void *p_arg)里面的WM_Exec();
|
|
|
|
是GUI_Exec();
|
|
|
|
不行啊,删除了就没显示了,我按照官方的回调函数那个例子,也有问题
void caback(WM_MESSAGE *pMsg) { switch (pMsg->MsgId) { case WM_PAINT: GUI_SetBkColor(GUI_GREEN); GUI_Clear(); cnt++; GUI_DispString("Foreground window"); GUI_DispDec(cnt,10); default: WM_DefaultProc(pMsg); } } void Task_Cursor(void *p_arg){ (void)p_arg; while(1) { hWin =WM_CreateWindow(0,0,XSIZE_PHYS,YSIZE_PHYS-YSIZE_PHYS/12,WM_CF_SHOW,caback,0); //GUI_Exec(); GUI_Delay(1000); //程序运行到这里就不往下执行了,直接进入了 空闲任务,什么原因呢??? WM_DeleteWindow(hWin); GUI_DispStringAt("Background of window has not been redrawn", 10, 10); GUI_Delay(1000); GUI_Clear(); } 还是不行 ,创建窗口后重绘了一次,显示 “Foreground window 0000000001” 但是执行到延时就不会执行了,还有,这个WM_PAINT只重绘一次吗?那为什么我开始了代码就重绘了好几次呢?这个WM_PAINT到底怎么执行的呢?谢谢你的解答!! |
|
|
|
我发现了一个问题,就是GUI_Delay()这个函数好像有问题,去掉函数第二个例子就没有问题,但是之前都没有问题的呀,,,
|
|
|
|
你在while1中就放delay,其余语句放在while1外面
|
|
|
|
只有小组成员才能发言,加入小组>>
682 浏览 0 评论
1099 浏览 1 评论
2464 浏览 5 评论
2798 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2634 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
645浏览 9评论
641浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
772浏览 6评论
618浏览 5评论
660浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-18 02:22 , Processed in 0.895984 second(s), Total 60, Slave 50 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号