Basic Example / test application for the on-board MICRON QSPI-Flash. Ported from DISCO_L476VG_QSPI. Added printing on serial output and LCD screen.
Dependencies: BSP_DISCO_F746NG LCD_DISCO_F746NG QSPI_DISCO_F746NG TS_DISCO_F746NG mbed
main.cpp@2:a655d6640167, 2015-10-20 (annotated)
- Committer:
- capsavon
- Date:
- Tue Oct 20 15:00:59 2015 +0000
- Revision:
- 2:a655d6640167
- Parent:
- 1:7bec6efe01d9
- Child:
- 3:13b323fb08e8
Menu display and transitions OK.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
capsavon | 0:742b53764813 | 1 | #include "mbed.h" |
capsavon | 0:742b53764813 | 2 | #include "TS_DISCO_F746NG.h" |
capsavon | 0:742b53764813 | 3 | #include "LCD_DISCO_F746NG.h" |
capsavon | 0:742b53764813 | 4 | |
capsavon | 2:a655d6640167 | 5 | #include "MenuGUIButton.h" |
capsavon | 2:a655d6640167 | 6 | #include "MenuGUIMenu.h" |
capsavon | 2:a655d6640167 | 7 | #include "MenuGUI.h" |
capsavon | 2:a655d6640167 | 8 | #include "main.h" |
capsavon | 2:a655d6640167 | 9 | |
capsavon | 0:742b53764813 | 10 | LCD_DISCO_F746NG lcd; |
capsavon | 0:742b53764813 | 11 | TS_DISCO_F746NG ts; |
capsavon | 0:742b53764813 | 12 | |
capsavon | 2:a655d6640167 | 13 | //MenuGUIButton button01; |
capsavon | 2:a655d6640167 | 14 | //MenuGUIButton button02; |
capsavon | 2:a655d6640167 | 15 | |
capsavon | 2:a655d6640167 | 16 | // TODO : add Ticker function |
capsavon | 2:a655d6640167 | 17 | |
capsavon | 0:742b53764813 | 18 | int main() |
capsavon | 0:742b53764813 | 19 | { |
capsavon | 0:742b53764813 | 20 | TS_StateTypeDef TS_State; |
capsavon | 0:742b53764813 | 21 | uint16_t x, y; |
capsavon | 0:742b53764813 | 22 | uint8_t text[30]; |
capsavon | 0:742b53764813 | 23 | uint8_t status; |
capsavon | 0:742b53764813 | 24 | uint8_t idx; |
capsavon | 0:742b53764813 | 25 | uint8_t cleared = 0; |
capsavon | 0:742b53764813 | 26 | uint8_t prev_nb_touches = 0; |
capsavon | 0:742b53764813 | 27 | |
capsavon | 0:742b53764813 | 28 | lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN DEMO", CENTER_MODE); |
capsavon | 2:a655d6640167 | 29 | wait(0.2); |
capsavon | 0:742b53764813 | 30 | |
capsavon | 0:742b53764813 | 31 | status = ts.Init(lcd.GetXSize(), lcd.GetYSize()); |
capsavon | 0:742b53764813 | 32 | if (status != TS_OK) { |
capsavon | 0:742b53764813 | 33 | lcd.Clear(LCD_COLOR_RED); |
capsavon | 0:742b53764813 | 34 | lcd.SetBackColor(LCD_COLOR_RED); |
capsavon | 0:742b53764813 | 35 | lcd.SetTextColor(LCD_COLOR_WHITE); |
capsavon | 0:742b53764813 | 36 | lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN INIT FAIL", CENTER_MODE); |
capsavon | 0:742b53764813 | 37 | } else { |
capsavon | 0:742b53764813 | 38 | lcd.Clear(LCD_COLOR_GREEN); |
capsavon | 0:742b53764813 | 39 | lcd.SetBackColor(LCD_COLOR_GREEN); |
capsavon | 0:742b53764813 | 40 | lcd.SetTextColor(LCD_COLOR_WHITE); |
capsavon | 0:742b53764813 | 41 | lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN INIT OK", CENTER_MODE); |
capsavon | 0:742b53764813 | 42 | } |
capsavon | 0:742b53764813 | 43 | |
capsavon | 2:a655d6640167 | 44 | wait(0.2); |
capsavon | 0:742b53764813 | 45 | lcd.SetFont(&Font12); |
capsavon | 0:742b53764813 | 46 | lcd.SetBackColor(LCD_COLOR_BLUE); |
capsavon | 0:742b53764813 | 47 | lcd.SetTextColor(LCD_COLOR_WHITE); |
capsavon | 1:7bec6efe01d9 | 48 | |
capsavon | 2:a655d6640167 | 49 | /* For test / demo |
capsavon | 2:a655d6640167 | 50 | ------------------ |
capsavon | 2:a655d6640167 | 51 | 2 menus + 1 main menu. The main menu has two buttons, each calling one of the two sub-menus: |
capsavon | 2:a655d6640167 | 52 | |
capsavon | 2:a655d6640167 | 53 | |------| |------| |------| |
capsavon | 2:a655d6640167 | 54 | | b1 | | b3 | | b6 | |
capsavon | 2:a655d6640167 | 55 | |------| |------| |------| |
capsavon | 2:a655d6640167 | 56 | ->menu01 |
capsavon | 2:a655d6640167 | 57 | |
capsavon | 2:a655d6640167 | 58 | |------| |------| |------| |
capsavon | 2:a655d6640167 | 59 | | b2 | | b4 | | b7 | |
capsavon | 2:a655d6640167 | 60 | |------| |------| |------| |
capsavon | 2:a655d6640167 | 61 | ->menu02 |
capsavon | 0:742b53764813 | 62 | |
capsavon | 2:a655d6640167 | 63 | |------| |------| |
capsavon | 2:a655d6640167 | 64 | | b5 | | b8 | |
capsavon | 2:a655d6640167 | 65 | |------| |------| |
capsavon | 2:a655d6640167 | 66 | menu_main menu01 menu02 |
capsavon | 2:a655d6640167 | 67 | |
capsavon | 2:a655d6640167 | 68 | */ |
capsavon | 2:a655d6640167 | 69 | |
capsavon | 2:a655d6640167 | 70 | MenuGUIButton button01 (10, 80, 80, 50, "b1", &lcd); |
capsavon | 2:a655d6640167 | 71 | MenuGUIButton button02 (10, 140, 80, 50, "b2", &lcd); |
capsavon | 2:a655d6640167 | 72 | MenuGUIButton button03 (100, 80, 80, 50, "b3", &lcd); |
capsavon | 2:a655d6640167 | 73 | MenuGUIButton button04 (100, 140, 80, 50, "b4", &lcd); |
capsavon | 2:a655d6640167 | 74 | |
capsavon | 2:a655d6640167 | 75 | MenuGUIButton button05 (190, 80, 80, 50, "b5", &lcd); |
capsavon | 2:a655d6640167 | 76 | MenuGUIButton button06 (190, 140, 80, 50, "b6", &lcd); |
capsavon | 2:a655d6640167 | 77 | MenuGUIButton button07 (190, 80, 80, 50, "b7", &lcd); |
capsavon | 2:a655d6640167 | 78 | MenuGUIButton button08 (190, 140, 80, 50, "b8", &lcd); |
capsavon | 2:a655d6640167 | 79 | |
capsavon | 2:a655d6640167 | 80 | // Main menu |
capsavon | 2:a655d6640167 | 81 | MenuGUIMenu menu_main (2, 10, 80); |
capsavon | 2:a655d6640167 | 82 | menu_main.add_button(&button01, 0, 1); |
capsavon | 2:a655d6640167 | 83 | menu_main.add_button(&button02, 1, 1); |
capsavon | 2:a655d6640167 | 84 | |
capsavon | 2:a655d6640167 | 85 | // Menu01 |
capsavon | 2:a655d6640167 | 86 | MenuGUIMenu menu01 (3, 100, 80); |
capsavon | 2:a655d6640167 | 87 | menu01.add_button(&button03, 0, 1); |
capsavon | 2:a655d6640167 | 88 | menu01.add_button(&button04, 1, 1); |
capsavon | 2:a655d6640167 | 89 | menu01.add_button(&button05, 2, 1); |
capsavon | 2:a655d6640167 | 90 | |
capsavon | 2:a655d6640167 | 91 | // Menu02 |
capsavon | 2:a655d6640167 | 92 | MenuGUIMenu menu02 (3, 190, 80); |
capsavon | 2:a655d6640167 | 93 | menu02.add_button(&button06, 0, 1); |
capsavon | 2:a655d6640167 | 94 | menu02.add_button(&button07, 1, 1); |
capsavon | 2:a655d6640167 | 95 | menu02.add_button(&button08, 2, 1); |
capsavon | 2:a655d6640167 | 96 | |
capsavon | 2:a655d6640167 | 97 | // Main MenuGUI object |
capsavon | 2:a655d6640167 | 98 | MenuGUI menugui01 (3); |
capsavon | 2:a655d6640167 | 99 | menugui01.add_menu (&menu_main, 0); |
capsavon | 2:a655d6640167 | 100 | menugui01.add_menu (&menu01, 1); |
capsavon | 2:a655d6640167 | 101 | menugui01.add_menu (&menu02, 2); |
capsavon | 2:a655d6640167 | 102 | |
capsavon | 2:a655d6640167 | 103 | // Set transitions |
capsavon | 2:a655d6640167 | 104 | menugui01.set_transition(1, 0, 0); |
capsavon | 2:a655d6640167 | 105 | menugui01.set_transition(2, 0, 1); |
capsavon | 2:a655d6640167 | 106 | |
capsavon | 2:a655d6640167 | 107 | |
capsavon | 0:742b53764813 | 108 | while(1) { |
capsavon | 2:a655d6640167 | 109 | |
capsavon | 2:a655d6640167 | 110 | lcd.SetBackColor(LCD_COLOR_BLUE); |
capsavon | 2:a655d6640167 | 111 | lcd.SetTextColor(LCD_COLOR_WHITE); |
capsavon | 0:742b53764813 | 112 | |
capsavon | 0:742b53764813 | 113 | ts.GetState(&TS_State); |
capsavon | 0:742b53764813 | 114 | if (TS_State.touchDetected) { |
capsavon | 0:742b53764813 | 115 | // Clear lines corresponding to old touches coordinates |
capsavon | 0:742b53764813 | 116 | if (TS_State.touchDetected < prev_nb_touches) { |
capsavon | 0:742b53764813 | 117 | for (idx = (TS_State.touchDetected + 1); idx <= 5; idx++) { |
capsavon | 0:742b53764813 | 118 | lcd.ClearStringLine(idx); |
capsavon | 0:742b53764813 | 119 | } |
capsavon | 0:742b53764813 | 120 | } |
capsavon | 0:742b53764813 | 121 | prev_nb_touches = TS_State.touchDetected; |
capsavon | 0:742b53764813 | 122 | |
capsavon | 0:742b53764813 | 123 | cleared = 0; |
capsavon | 0:742b53764813 | 124 | |
capsavon | 0:742b53764813 | 125 | sprintf((char*)text, "Touches: %d", TS_State.touchDetected); |
capsavon | 0:742b53764813 | 126 | lcd.DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE); |
capsavon | 0:742b53764813 | 127 | |
capsavon | 0:742b53764813 | 128 | for (idx = 0; idx < TS_State.touchDetected; idx++) { |
capsavon | 0:742b53764813 | 129 | x = TS_State.touchX[idx]; |
capsavon | 0:742b53764813 | 130 | y = TS_State.touchY[idx]; |
capsavon | 0:742b53764813 | 131 | sprintf((char*)text, "Touch %d: x=%d y=%d ", idx+1, x, y); |
capsavon | 0:742b53764813 | 132 | lcd.DisplayStringAt(0, LINE(idx+1), (uint8_t *)&text, LEFT_MODE); |
capsavon | 1:7bec6efe01d9 | 133 | |
capsavon | 0:742b53764813 | 134 | } |
capsavon | 0:742b53764813 | 135 | |
capsavon | 0:742b53764813 | 136 | lcd.DrawPixel(TS_State.touchX[0], TS_State.touchY[0], LCD_COLOR_ORANGE); |
capsavon | 1:7bec6efe01d9 | 137 | |
capsavon | 0:742b53764813 | 138 | } else { |
capsavon | 0:742b53764813 | 139 | if (!cleared) { |
capsavon | 0:742b53764813 | 140 | lcd.Clear(LCD_COLOR_BLUE); |
capsavon | 0:742b53764813 | 141 | sprintf((char*)text, "Touches: 0"); |
capsavon | 0:742b53764813 | 142 | lcd.DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE); |
capsavon | 1:7bec6efe01d9 | 143 | |
capsavon | 0:742b53764813 | 144 | cleared = 1; |
capsavon | 0:742b53764813 | 145 | } |
capsavon | 0:742b53764813 | 146 | } |
capsavon | 2:a655d6640167 | 147 | |
capsavon | 2:a655d6640167 | 148 | /* ------------------------------------------------------------------------ */ |
capsavon | 2:a655d6640167 | 149 | |
capsavon | 2:a655d6640167 | 150 | // Touch detection of one button |
capsavon | 2:a655d6640167 | 151 | if (TS_State.touchDetected > 0) { |
capsavon | 2:a655d6640167 | 152 | |
capsavon | 2:a655d6640167 | 153 | menugui01.update(TS_State.touchX[0], TS_State.touchY[0]); |
capsavon | 2:a655d6640167 | 154 | |
capsavon | 2:a655d6640167 | 155 | } |
capsavon | 2:a655d6640167 | 156 | else { |
capsavon | 2:a655d6640167 | 157 | |
capsavon | 2:a655d6640167 | 158 | menugui01.update(); |
capsavon | 2:a655d6640167 | 159 | |
capsavon | 2:a655d6640167 | 160 | } |
capsavon | 2:a655d6640167 | 161 | |
capsavon | 2:a655d6640167 | 162 | menugui01.display(); |
capsavon | 2:a655d6640167 | 163 | |
capsavon | 0:742b53764813 | 164 | } |
capsavon | 0:742b53764813 | 165 | } |
capsavon | 1:7bec6efe01d9 | 166 | |
capsavon | 2:a655d6640167 | 167 | |
capsavon | 2:a655d6640167 | 168 | |
capsavon | 2:a655d6640167 | 169 | |
capsavon | 2:a655d6640167 | 170 |