|
移植了ucosii,弄了3个任务,两个是LED闪烁,一个是串口任务,可以正常使用。
然后把ewmin5.20加入,如果LCD显示任务是显示一堆数值,是可以的,没有问题,
如果画一个圆也没有问题,GUI_DrawCircle(120, 60,50);
如果要使用控件,绘制进度条就有问题,屏幕就是黑色的,但是其他任务(LED闪烁)还在运行。
如果是绘制一个填充的多边形(display_draw())就进入Handfault中断错误。
/* LCD显示任务 */
void TaskLCD(void *pdata)
{
pdata = pdata;
GUI_SetBkColor(GUI_GREEN);
GUI_Clear();
while(1)
{
//display_ProgBar();
display_number();
//MainTask_display();
//display_draw();
//GUI_DrawCircle(120, 60,50);
OSTimeDlyHMSM(0,0,0,100);
}
}
void display_number(void)
{
GUI_SetFont(&GUI_Font8x16);
GUI_SetTextStyle(GUI_TS_NORMAL);
GUI_DispDecAt(-1234,0,150,5); /* 负号也算一位 */
GUI_DispDecAt(1234,60,150,4); /* 显示十进制数"1234"*/
GUI_DispDecAt(1234,120,150,5); /* 显示位数多于实际数值,会在前面加0 */
GUI_GotoXY(180,150);
GUI_DispDecShift(1234,5,2); /* 显示一个带小数点的整数,小数点也要算位数 */
GUI_GotoXY(240,150);
GUI_DispSDec(1234,5); /* 显示带符号的整数,如果是正数,显示“+”,符号要算位数*/
GUI_GotoXY(300,150);
GUI_DispSDecShift(1234,6,2); /* 显示带符号和小数点整数,如果是正数,显示“+”,符号要算位数 */
GUI_GotoXY(0,170);
GUI_DispSFloatMin(1.2356,6); /* 显示浮点数:1.235600,位数表示小数点后的位数 */
GUI_GotoXY(80,170);
GUI_DispString(GUI_GetVersionString());
}
void display_draw()
{
GUI_Init();
GUI_SetBkColor(GUI_YELLOW);
GUI_Clear();
GUI_SetDrawMode(GUI_DRAWMODE_NORMAL);
GUI_FillCircle(120,64,40);
GUI_SetDrawMode(GUI_DRAWMODE_XOR);
GUI_FillCircle(140,84,40);
}
以上函数在裸机上单独运行都是可以的 |
|