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

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?

UserRevisionLine numberNew 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