Nuvoton
/
NuMaker-mbed-emWin-example
NuMaker emWin HMI
main.cpp@4:3d28c66231b0, 2021-02-25 (annotated)
- Committer:
- SHLIU1@OANBE02333.nuvoton.com
- Date:
- Thu Feb 25 15:40:31 2021 +0800
- Revision:
- 4:3d28c66231b0
- Parent:
- 0:9d0785906425
- Child:
- 6:d15151941247
Support the both V5.X and V6.X for mbed-os
Who changed what in which revision?
User | Revision | Line number | New 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 |
0:9d0785906425 | 7 | #include "M48XTouchPanel.h" |
csyang2 |
0:9d0785906425 | 8 | #include "tslib.h" |
csyang2 |
0:9d0785906425 | 9 | // |
csyang2 |
0:9d0785906425 | 10 | // Enable emWin touch feature after calibration |
csyang2 |
0:9d0785906425 | 11 | // |
csyang2 |
0:9d0785906425 | 12 | volatile int g_enable_Touch; |
csyang2 |
0:9d0785906425 | 13 | // |
csyang2 |
0:9d0785906425 | 14 | // For touch sampling timer |
csyang2 |
0:9d0785906425 | 15 | // |
csyang2 |
0:9d0785906425 | 16 | Ticker s_ticker_emWinloop; |
csyang2 |
0:9d0785906425 | 17 | // |
csyang2 |
0:9d0785906425 | 18 | // emWin timer count |
csyang2 |
0:9d0785906425 | 19 | // |
csyang2 |
0:9d0785906425 | 20 | extern GUI_TIMER_TIME OS_TimeMS; |
csyang2 |
0:9d0785906425 | 21 | // |
csyang2 |
0:9d0785906425 | 22 | // Tick loop for emWin and touch |
csyang2 |
0:9d0785906425 | 23 | // |
csyang2 |
0:9d0785906425 | 24 | void task_emWinloop(void) |
csyang2 |
0:9d0785906425 | 25 | { |
csyang2 |
0:9d0785906425 | 26 | OS_TimeMS++; |
csyang2 |
0:9d0785906425 | 27 | #if GUI_SUPPORT_TOUCH |
csyang2 |
0:9d0785906425 | 28 | if ( OS_TimeMS % 10 == 0 ) |
csyang2 |
0:9d0785906425 | 29 | { |
csyang2 |
0:9d0785906425 | 30 | if ( g_enable_Touch == 1 ) |
csyang2 |
0:9d0785906425 | 31 | { |
csyang2 |
0:9d0785906425 | 32 | GUI_TOUCH_Exec(); |
csyang2 |
0:9d0785906425 | 33 | } |
csyang2 |
0:9d0785906425 | 34 | } |
csyang2 |
0:9d0785906425 | 35 | #endif |
csyang2 |
0:9d0785906425 | 36 | } |
csyang2 |
0:9d0785906425 | 37 | // |
csyang2 |
0:9d0785906425 | 38 | // Extern emWin GUI layout |
csyang2 |
0:9d0785906425 | 39 | // |
csyang2 |
0:9d0785906425 | 40 | extern WM_HWIN CreateFramewin(void); |
csyang2 |
0:9d0785906425 | 41 | // |
csyang2 |
0:9d0785906425 | 42 | // emWin MainTask to create a GUI layout |
csyang2 |
0:9d0785906425 | 43 | // |
csyang2 |
0:9d0785906425 | 44 | void MainTask(void) |
csyang2 |
0:9d0785906425 | 45 | { |
csyang2 |
0:9d0785906425 | 46 | WM_HWIN hWin; |
csyang2 |
0:9d0785906425 | 47 | char acVersion[40] = "Framewin: Version of emWin: "; |
csyang2 |
0:9d0785906425 | 48 | |
csyang2 |
0:9d0785906425 | 49 | printf("Main Task -> \n"); |
csyang2 |
0:9d0785906425 | 50 | |
csyang2 |
0:9d0785906425 | 51 | strcat(acVersion, GUI_GetVersionString()); |
csyang2 |
0:9d0785906425 | 52 | hWin = CreateFramewin(); |
csyang2 |
0:9d0785906425 | 53 | FRAMEWIN_SetText(hWin, acVersion); |
csyang2 |
0:9d0785906425 | 54 | while (1) |
csyang2 |
0:9d0785906425 | 55 | { |
csyang2 |
0:9d0785906425 | 56 | GUI_Delay(500); |
csyang2 |
0:9d0785906425 | 57 | } |
csyang2 |
0:9d0785906425 | 58 | } |
csyang2 |
0:9d0785906425 | 59 | // |
csyang2 |
0:9d0785906425 | 60 | // Main |
csyang2 |
0:9d0785906425 | 61 | // |
csyang2 |
0:9d0785906425 | 62 | int main(void) |
csyang2 |
0:9d0785906425 | 63 | { |
SHLIU1@OANBE02333.nuvoton.com | 4:3d28c66231b0 | 64 | #ifdef MBED_MAJOR_VERSION |
SHLIU1@OANBE02333.nuvoton.com | 4:3d28c66231b0 | 65 | 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 | 66 | #endif |
csyang2 |
0:9d0785906425 | 67 | // |
csyang2 |
0:9d0785906425 | 68 | // Before touch calibration |
csyang2 |
0:9d0785906425 | 69 | // |
csyang2 |
0:9d0785906425 | 70 | g_enable_Touch = 0; |
csyang2 |
0:9d0785906425 | 71 | // |
csyang2 |
0:9d0785906425 | 72 | // Attach Mbed tick |
csyang2 |
0:9d0785906425 | 73 | // |
csyang2 |
0:9d0785906425 | 74 | s_ticker_emWinloop.attach(&task_emWinloop, 0.001); |
csyang2 |
0:9d0785906425 | 75 | |
csyang2 |
0:9d0785906425 | 76 | #if GUI_SUPPORT_TOUCH |
csyang2 |
0:9d0785906425 | 77 | // |
csyang2 |
0:9d0785906425 | 78 | // Init emWin and touch calibration |
csyang2 |
0:9d0785906425 | 79 | // |
csyang2 |
0:9d0785906425 | 80 | GUI_Init(); |
csyang2 |
0:9d0785906425 | 81 | Init_TouchPanel(); |
csyang2 |
0:9d0785906425 | 82 | ts_calibrate(__DEMO_TS_WIDTH__, __DEMO_TS_HEIGHT__); |
csyang2 |
0:9d0785906425 | 83 | #endif |
csyang2 |
0:9d0785906425 | 84 | // |
csyang2 |
0:9d0785906425 | 85 | // After touch calibration |
csyang2 |
0:9d0785906425 | 86 | // |
csyang2 |
0:9d0785906425 | 87 | g_enable_Touch = 1; |
csyang2 |
0:9d0785906425 | 88 | // |
csyang2 |
0:9d0785906425 | 89 | // Create GUI layout |
csyang2 |
0:9d0785906425 | 90 | // |
csyang2 |
0:9d0785906425 | 91 | MainTask(); |
csyang2 |
0:9d0785906425 | 92 | |
csyang2 |
0:9d0785906425 | 93 | while(1); |
csyang2 |
0:9d0785906425 | 94 | } |