金牌会员
- 积分
- 1289
- 金钱
- 1289
- 注册时间
- 2014-6-15
- 在线时间
- 143 小时
|
5金钱
我战舰开发板上移植ucos2+emWin,
emWin使用的是5.22的
LCD 和触摸屏都正常了,
然后使用5.22里的GUIBuilder,创建了一个button控件,
生成一个FramewinDLG.c文件后加入工程
但是下载到板子之后就死了,进入HardFault_Handler中断了,纠结啊????、、
源码如下
#include"includes.h"
#include"gui.h"
#include"ILI93XX.h"
#include"touch.h"
#include"wm.h"
static OS_STK LcdTaskStk[LCD_TASK_STK_SIZE];
static OS_STK TouchTaskStk[TOUCH_TASK_STK_SIZE];
static OS_STK TouchExecTaskStk[TOUCHEXEC_TASK_STK_SIZE];
WM_HWIN CreateFramewin(void);
void taskLED(void *p_arg)
{
static u8 uLedFlag=0;
(void)p_arg;
LED_GPIO_Config();
OSTaskCreate(taskLcd,(void *)0,
&LcdTaskStk[LCD_TASK_STK_SIZE - 1],LCD_TASK_PRIO);
OSTaskCreate(taskTouch,(void *)0,
&TouchTaskStk[TOUCH_TASK_STK_SIZE - 1],TOUCH_TASK_PRIO);
OSTaskCreate(taskTouchExec,(void *)0,
&TouchExecTaskStk[TOUCHEXEC_TASK_STK_SIZE - 1],TOUCHEXEC_TASK_PRIO);
while(1)
{
// LED1(ON);
//
//LED1(OFF);
uLedFlag=~uLedFlag;
LED2(uLedFlag);
OSTimeDlyHMSM(0,0,0,500);
//LED2(OFF);
// OSTimeDlyHMSM(0,0,0,200);
}
}
void taskLcd(void *p_arg)
{
(void)p_arg;
LCDx_Init();
GUI_Init();
//GUI_DispString("Hello STemWin!");
CreateFramewin();
while(1)
{
OSTimeDlyHMSM(0,0,0,200);
}
}
void taskTouch(void *p_arg)
{
(void)p_arg;
TP_Init();
GUI_TOUCH_Exec();
GUI_CURSOR_Show();
while(1)
{
// GUI_TOUCH_Exec();
GUI_Exec();
OSTimeDlyHMSM(0,0,0,100);
}
}
void taskTouchExec(void *p_arg)
{
(void)p_arg;
while(1)
{
GUI_TOUCH_Exec();
OSTimeDlyHMSM(0,0,0,20);
}
}
红色的那一句是FramewinDLG文件里的一个函数,发现只要执行这一句,必死,注释掉就正常
该函数如下
WM_HWIN CreateFramewin(void) {
WM_HWIN hWin;
hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
return hWin;
}
求解????????????
另外,我在不使用UCOS2的情况下试了一下,能正常运行,
|
最佳答案
查看完整内容[请看2#楼]
回复【6楼】冰封嗜魔:
---------------------------------
我改成这样就正常了,
void taskLcd(void *p_arg)
{
(void)p_arg;
LCDx_Init();
GUI_Init();
//GUI_DispString("Hello STemWin!");
CreateFramewin();
while(1)
{
GUI_Exec( ...
|