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@1:7bec6efe01d9, 2015-10-18 (annotated)
- Committer:
- capsavon
- Date:
- Sun Oct 18 12:24:51 2015 +0000
- Revision:
- 1:7bec6efe01d9
- Parent:
- 0:742b53764813
- Child:
- 2:a655d6640167
Test with a bunch of buttons, with the first "clickable".
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 | 0:742b53764813 | 5 | LCD_DISCO_F746NG lcd; |
capsavon | 0:742b53764813 | 6 | TS_DISCO_F746NG ts; |
capsavon | 0:742b53764813 | 7 | |
capsavon | 0:742b53764813 | 8 | int main() |
capsavon | 0:742b53764813 | 9 | { |
capsavon | 0:742b53764813 | 10 | TS_StateTypeDef TS_State; |
capsavon | 0:742b53764813 | 11 | uint16_t x, y; |
capsavon | 0:742b53764813 | 12 | uint8_t text[30]; |
capsavon | 0:742b53764813 | 13 | uint8_t status; |
capsavon | 0:742b53764813 | 14 | uint8_t idx; |
capsavon | 0:742b53764813 | 15 | uint8_t cleared = 0; |
capsavon | 0:742b53764813 | 16 | uint8_t prev_nb_touches = 0; |
capsavon | 0:742b53764813 | 17 | |
capsavon | 0:742b53764813 | 18 | lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN DEMO", CENTER_MODE); |
capsavon | 0:742b53764813 | 19 | wait(1); |
capsavon | 0:742b53764813 | 20 | |
capsavon | 0:742b53764813 | 21 | status = ts.Init(lcd.GetXSize(), lcd.GetYSize()); |
capsavon | 0:742b53764813 | 22 | if (status != TS_OK) { |
capsavon | 0:742b53764813 | 23 | lcd.Clear(LCD_COLOR_RED); |
capsavon | 0:742b53764813 | 24 | lcd.SetBackColor(LCD_COLOR_RED); |
capsavon | 0:742b53764813 | 25 | lcd.SetTextColor(LCD_COLOR_WHITE); |
capsavon | 0:742b53764813 | 26 | lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN INIT FAIL", CENTER_MODE); |
capsavon | 0:742b53764813 | 27 | } else { |
capsavon | 0:742b53764813 | 28 | lcd.Clear(LCD_COLOR_GREEN); |
capsavon | 0:742b53764813 | 29 | lcd.SetBackColor(LCD_COLOR_GREEN); |
capsavon | 0:742b53764813 | 30 | lcd.SetTextColor(LCD_COLOR_WHITE); |
capsavon | 0:742b53764813 | 31 | lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"TOUCHSCREEN INIT OK", CENTER_MODE); |
capsavon | 0:742b53764813 | 32 | } |
capsavon | 0:742b53764813 | 33 | |
capsavon | 0:742b53764813 | 34 | wait(1); |
capsavon | 0:742b53764813 | 35 | lcd.SetFont(&Font12); |
capsavon | 0:742b53764813 | 36 | lcd.SetBackColor(LCD_COLOR_BLUE); |
capsavon | 0:742b53764813 | 37 | lcd.SetTextColor(LCD_COLOR_WHITE); |
capsavon | 1:7bec6efe01d9 | 38 | |
capsavon | 1:7bec6efe01d9 | 39 | lcd.DrawRect(10, 80, 50, 50); |
capsavon | 1:7bec6efe01d9 | 40 | lcd.DrawRect(10, 140, 50, 50); |
capsavon | 1:7bec6efe01d9 | 41 | lcd.DrawRect(10, 200, 50, 50); |
capsavon | 1:7bec6efe01d9 | 42 | lcd.DrawRect(70, 80, 50, 50); |
capsavon | 1:7bec6efe01d9 | 43 | lcd.DrawRect(130, 80, 50, 50); |
capsavon | 1:7bec6efe01d9 | 44 | lcd.DrawRect(190, 80, 50, 50); |
capsavon | 1:7bec6efe01d9 | 45 | lcd.DrawRect(250, 80, 50, 50); |
capsavon | 1:7bec6efe01d9 | 46 | lcd.DrawRect(310, 80, 50, 50); |
capsavon | 1:7bec6efe01d9 | 47 | lcd.DrawRect(370, 80, 50, 50); |
capsavon | 0:742b53764813 | 48 | |
capsavon | 0:742b53764813 | 49 | while(1) { |
capsavon | 0:742b53764813 | 50 | |
capsavon | 0:742b53764813 | 51 | ts.GetState(&TS_State); |
capsavon | 0:742b53764813 | 52 | if (TS_State.touchDetected) { |
capsavon | 0:742b53764813 | 53 | // Clear lines corresponding to old touches coordinates |
capsavon | 0:742b53764813 | 54 | if (TS_State.touchDetected < prev_nb_touches) { |
capsavon | 0:742b53764813 | 55 | for (idx = (TS_State.touchDetected + 1); idx <= 5; idx++) { |
capsavon | 0:742b53764813 | 56 | lcd.ClearStringLine(idx); |
capsavon | 0:742b53764813 | 57 | } |
capsavon | 0:742b53764813 | 58 | } |
capsavon | 0:742b53764813 | 59 | prev_nb_touches = TS_State.touchDetected; |
capsavon | 0:742b53764813 | 60 | |
capsavon | 0:742b53764813 | 61 | cleared = 0; |
capsavon | 0:742b53764813 | 62 | |
capsavon | 0:742b53764813 | 63 | sprintf((char*)text, "Touches: %d", TS_State.touchDetected); |
capsavon | 0:742b53764813 | 64 | lcd.DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE); |
capsavon | 0:742b53764813 | 65 | |
capsavon | 0:742b53764813 | 66 | for (idx = 0; idx < TS_State.touchDetected; idx++) { |
capsavon | 0:742b53764813 | 67 | x = TS_State.touchX[idx]; |
capsavon | 0:742b53764813 | 68 | y = TS_State.touchY[idx]; |
capsavon | 0:742b53764813 | 69 | sprintf((char*)text, "Touch %d: x=%d y=%d ", idx+1, x, y); |
capsavon | 0:742b53764813 | 70 | lcd.DisplayStringAt(0, LINE(idx+1), (uint8_t *)&text, LEFT_MODE); |
capsavon | 1:7bec6efe01d9 | 71 | |
capsavon | 1:7bec6efe01d9 | 72 | if ((x < 60) && (x > 10) && (y < 120) && (y > 70)) { |
capsavon | 1:7bec6efe01d9 | 73 | lcd.FillRect(10, 80, 50, 50); |
capsavon | 1:7bec6efe01d9 | 74 | } |
capsavon | 1:7bec6efe01d9 | 75 | else { |
capsavon | 1:7bec6efe01d9 | 76 | lcd.DrawRect(10, 80, 50, 50); |
capsavon | 1:7bec6efe01d9 | 77 | } |
capsavon | 1:7bec6efe01d9 | 78 | |
capsavon | 0:742b53764813 | 79 | } |
capsavon | 0:742b53764813 | 80 | |
capsavon | 0:742b53764813 | 81 | lcd.DrawPixel(TS_State.touchX[0], TS_State.touchY[0], LCD_COLOR_ORANGE); |
capsavon | 1:7bec6efe01d9 | 82 | |
capsavon | 1:7bec6efe01d9 | 83 | |
capsavon | 0:742b53764813 | 84 | } else { |
capsavon | 0:742b53764813 | 85 | if (!cleared) { |
capsavon | 0:742b53764813 | 86 | lcd.Clear(LCD_COLOR_BLUE); |
capsavon | 0:742b53764813 | 87 | sprintf((char*)text, "Touches: 0"); |
capsavon | 0:742b53764813 | 88 | lcd.DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE); |
capsavon | 1:7bec6efe01d9 | 89 | |
capsavon | 1:7bec6efe01d9 | 90 | lcd.DrawRect(10, 80, 50, 50); |
capsavon | 1:7bec6efe01d9 | 91 | lcd.DrawRect(10, 140, 50, 50); |
capsavon | 1:7bec6efe01d9 | 92 | lcd.DrawRect(10, 200, 50, 50); |
capsavon | 1:7bec6efe01d9 | 93 | lcd.DrawRect(70, 80, 50, 50); |
capsavon | 1:7bec6efe01d9 | 94 | lcd.DrawRect(130, 80, 50, 50); |
capsavon | 1:7bec6efe01d9 | 95 | lcd.DrawRect(190, 80, 50, 50); |
capsavon | 1:7bec6efe01d9 | 96 | lcd.DrawRect(250, 80, 50, 50); |
capsavon | 1:7bec6efe01d9 | 97 | lcd.DrawRect(310, 80, 50, 50); |
capsavon | 1:7bec6efe01d9 | 98 | lcd.DrawRect(370, 80, 50, 50); |
capsavon | 1:7bec6efe01d9 | 99 | |
capsavon | 0:742b53764813 | 100 | cleared = 1; |
capsavon | 0:742b53764813 | 101 | } |
capsavon | 0:742b53764813 | 102 | } |
capsavon | 0:742b53764813 | 103 | } |
capsavon | 0:742b53764813 | 104 | } |
capsavon | 1:7bec6efe01d9 | 105 |