NuMaker emWin HMI

Committer:
csyang2
Date:
Mon Mar 04 15:47:41 2024 +0800
Revision:
10:c8165817d92a
Parent:
9:1286ec7f3230
Support NuMaker-IoT-M467

Who changed what in which revision?

UserRevisionLine numberNew contents of line
csyang2 0:9d0785906425 1 #include "mbed.h"
csyang2 0:9d0785906425 2
csyang2 0:9d0785906425 3 #include "GUI.h"
csyang2 0:9d0785906425 4 #include "WM.h"
csyang2 0:9d0785906425 5 #include "FRAMEWIN.h"
csyang2 0:9d0785906425 6
csyang2 6:d15151941247 7 #include "TouchPanel.h"
csyang2 0:9d0785906425 8 //
csyang2 0:9d0785906425 9 // Enable emWin touch feature after calibration
csyang2 0:9d0785906425 10 //
csyang2 0:9d0785906425 11 volatile int g_enable_Touch;
csyang2 0:9d0785906425 12 //
csyang2 0:9d0785906425 13 // For touch sampling timer
csyang2 0:9d0785906425 14 //
csyang2 0:9d0785906425 15 Ticker s_ticker_emWinloop;
csyang2 0:9d0785906425 16 //
csyang2 0:9d0785906425 17 // emWin timer count
csyang2 0:9d0785906425 18 //
csyang2 0:9d0785906425 19 extern GUI_TIMER_TIME OS_TimeMS;
csyang2 0:9d0785906425 20 //
csyang2 9:1286ec7f3230 21 // Tick loop for emWin
csyang2 0:9d0785906425 22 //
csyang2 0:9d0785906425 23 void task_emWinloop(void)
csyang2 0:9d0785906425 24 {
csyang2 0:9d0785906425 25 OS_TimeMS++;
csyang2 9:1286ec7f3230 26 }
csyang2 9:1286ec7f3230 27 //
csyang2 9:1286ec7f3230 28 // loop for emWin touch
csyang2 9:1286ec7f3230 29 //
csyang2 9:1286ec7f3230 30 Thread touch_thread;
csyang2 9:1286ec7f3230 31
csyang2 9:1286ec7f3230 32 void gui_touch_thread()
csyang2 9:1286ec7f3230 33 {
csyang2 9:1286ec7f3230 34 while (true)
csyang2 9:1286ec7f3230 35 {
csyang2 0:9d0785906425 36 #if GUI_SUPPORT_TOUCH
csyang2 0:9d0785906425 37 if ( g_enable_Touch == 1 )
csyang2 0:9d0785906425 38 {
csyang2 0:9d0785906425 39 GUI_TOUCH_Exec();
csyang2 0:9d0785906425 40 }
csyang2 9:1286ec7f3230 41 #endif
csyang2 9:1286ec7f3230 42 ThisThread::sleep_for(20);
csyang2 0:9d0785906425 43 }
csyang2 0:9d0785906425 44 }
csyang2 0:9d0785906425 45 //
csyang2 0:9d0785906425 46 // Extern emWin GUI layout
csyang2 0:9d0785906425 47 //
csyang2 0:9d0785906425 48 extern WM_HWIN CreateFramewin(void);
csyang2 0:9d0785906425 49 //
csyang2 0:9d0785906425 50 // emWin MainTask to create a GUI layout
csyang2 0:9d0785906425 51 //
csyang2 0:9d0785906425 52 void MainTask(void)
csyang2 0:9d0785906425 53 {
csyang2 0:9d0785906425 54 WM_HWIN hWin;
csyang2 0:9d0785906425 55 char acVersion[40] = "Framewin: Version of emWin: ";
csyang2 0:9d0785906425 56
csyang2 0:9d0785906425 57 printf("Main Task -> \n");
csyang2 0:9d0785906425 58
csyang2 0:9d0785906425 59 strcat(acVersion, GUI_GetVersionString());
csyang2 0:9d0785906425 60 hWin = CreateFramewin();
csyang2 0:9d0785906425 61 FRAMEWIN_SetText(hWin, acVersion);
csyang2 0:9d0785906425 62 while (1)
csyang2 0:9d0785906425 63 {
csyang2 0:9d0785906425 64 GUI_Delay(500);
csyang2 0:9d0785906425 65 }
csyang2 0:9d0785906425 66 }
csyang2 0:9d0785906425 67 //
csyang2 0:9d0785906425 68 // Main
csyang2 0:9d0785906425 69 //
csyang2 0:9d0785906425 70 int main(void)
csyang2 0:9d0785906425 71 {
SHLIU1@OANBE02333.nuvoton.com 4:3d28c66231b0 72 #ifdef MBED_MAJOR_VERSION
SHLIU1@OANBE02333.nuvoton.com 4:3d28c66231b0 73 printf("Mbed OS version %d.%d.%d\r\n\n", MBED_MAJOR_VERSION, MBED_MINOR_VERSION, MBED_PATCH_VERSION);
SHLIU1@OANBE02333.nuvoton.com 4:3d28c66231b0 74 #endif
csyang2 0:9d0785906425 75 //
csyang2 0:9d0785906425 76 // Before touch calibration
csyang2 0:9d0785906425 77 //
csyang2 0:9d0785906425 78 g_enable_Touch = 0;
csyang2 0:9d0785906425 79 //
csyang2 0:9d0785906425 80 // Attach Mbed tick
csyang2 0:9d0785906425 81 //
csyang2 0:9d0785906425 82 s_ticker_emWinloop.attach(&task_emWinloop, 0.001);
csyang2 0:9d0785906425 83
csyang2 0:9d0785906425 84 #if GUI_SUPPORT_TOUCH
csyang2 0:9d0785906425 85 //
csyang2 0:9d0785906425 86 // Init emWin and touch calibration
csyang2 0:9d0785906425 87 //
csyang2 0:9d0785906425 88 GUI_Init();
csyang2 0:9d0785906425 89 Init_TouchPanel();
csyang2 0:9d0785906425 90 ts_calibrate(__DEMO_TS_WIDTH__, __DEMO_TS_HEIGHT__);
csyang2 0:9d0785906425 91 #endif
csyang2 0:9d0785906425 92 //
csyang2 0:9d0785906425 93 // After touch calibration
csyang2 0:9d0785906425 94 //
csyang2 0:9d0785906425 95 g_enable_Touch = 1;
csyang2 9:1286ec7f3230 96 touch_thread.start(gui_touch_thread);
csyang2 0:9d0785906425 97 //
csyang2 0:9d0785906425 98 // Create GUI layout
csyang2 0:9d0785906425 99 //
csyang2 0:9d0785906425 100 MainTask();
csyang2 0:9d0785906425 101
csyang2 0:9d0785906425 102 while(1);
csyang2 0:9d0785906425 103 }