Clone of the "Keyboard" project combined with string>LCD calls and Serial reading for the STM32F746G-DISCO. Screen has to be reset and the font set again, and Serial must be created and destroyed each time, to dodge apparent F7 lower-level issues. Keyboard can print prompt.

Dependencies:   BSP_DISCO_F746NG mbed

Fork of Keyboard by Faberge Fabulous

Committer:
jknowles
Date:
Wed Feb 15 19:25:36 2017 +0000
Revision:
2:14dc9a7c52ac
Parent:
1:25b8d7bfc7d4
Child:
3:12b494808ffa
name ans password working ... just prior to splicing in engrng screen

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Faberge 0:3ea368f65bca 1 /*
Faberge 0:3ea368f65bca 2 *******************************************************************************
Faberge 0:3ea368f65bca 3 * Пример работы экранной клавиатуры на демо-плате STM32F746NG Discovery с
Faberge 0:3ea368f65bca 4 * использованием стандартного набора библиотек BSP и пользовательской
Faberge 0:3ea368f65bca 5 * библиотеки "keyboard.h"
Faberge 0:3ea368f65bca 6 *******************************************************************************
Faberge 0:3ea368f65bca 7 */
Faberge 0:3ea368f65bca 8
Faberge 0:3ea368f65bca 9 /* Добавляем библиотеку для работы с LCD */
Faberge 0:3ea368f65bca 10 #include "stm32746g_discovery_lcd.h"
Faberge 0:3ea368f65bca 11
Faberge 0:3ea368f65bca 12 /* Добавляем библиотеку экранной клавиатуры */
Faberge 0:3ea368f65bca 13 #include "keyboard.h"
Faberge 0:3ea368f65bca 14
Faberge 0:3ea368f65bca 15 /* Вспомогательные переменые */
Faberge 0:3ea368f65bca 16 uint8_t i;
Faberge 0:3ea368f65bca 17 uint8_t key;
jknowles 1:25b8d7bfc7d4 18 uint8_t len;
Faberge 0:3ea368f65bca 19
Faberge 0:3ea368f65bca 20 /* Пользовательский буфер */
jknowles 2:14dc9a7c52ac 21 char kb_buffer[45];
Faberge 0:3ea368f65bca 22
jknowles 2:14dc9a7c52ac 23 void start_KB_LCD()
Faberge 0:3ea368f65bca 24 {
Faberge 0:3ea368f65bca 25 /* Инициализация дисплея */
jknowles 2:14dc9a7c52ac 26 /* Включаем дисплей */
jknowles 2:14dc9a7c52ac 27 /* Настраиваем первый и второй слои дисплея */
Faberge 0:3ea368f65bca 28 BSP_LCD_Init();
Faberge 0:3ea368f65bca 29 BSP_LCD_LayerDefaultInit(0, LCD_FB_START_ADDRESS);
Faberge 0:3ea368f65bca 30 BSP_LCD_LayerDefaultInit(1, LCD_FB_START_ADDRESS + (BSP_LCD_GetXSize() * BSP_LCD_GetYSize() * 4));
Faberge 0:3ea368f65bca 31 BSP_LCD_DisplayOn();
Faberge 0:3ea368f65bca 32 BSP_LCD_SelectLayer(0);
Faberge 0:3ea368f65bca 33 BSP_LCD_Clear(LCD_COLOR_WHITE);
Faberge 0:3ea368f65bca 34 BSP_LCD_SelectLayer(1);
Faberge 0:3ea368f65bca 35 BSP_LCD_Clear(LCD_COLOR_BLACK);
Faberge 0:3ea368f65bca 36 BSP_LCD_SetTransparency(0, 0);
Faberge 0:3ea368f65bca 37 BSP_LCD_SetTransparency(1, 100);
Faberge 0:3ea368f65bca 38 /* Настраиваем цвет фона экрана и цвет текста, а также шрифт */
jknowles 2:14dc9a7c52ac 39 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
Faberge 0:3ea368f65bca 40 BSP_LCD_SetBackColor(LCD_COLOR_BLACK);
Faberge 0:3ea368f65bca 41 BSP_LCD_SetFont(&Font16);
jknowles 2:14dc9a7c52ac 42
Faberge 0:3ea368f65bca 43 /* Инициализация тач-экрана*/
Faberge 0:3ea368f65bca 44 BSP_TS_Init(BSP_LCD_GetXSize(), BSP_LCD_GetYSize());
jknowles 2:14dc9a7c52ac 45
jknowles 2:14dc9a7c52ac 46 }
jknowles 2:14dc9a7c52ac 47
jknowles 2:14dc9a7c52ac 48
jknowles 2:14dc9a7c52ac 49 void get_kbd_str(char *bufr)
jknowles 2:14dc9a7c52ac 50 {
jknowles 2:14dc9a7c52ac 51 start_KB_LCD();
jknowles 2:14dc9a7c52ac 52 Keyboard_init(0, 80);
jknowles 2:14dc9a7c52ac 53 while(1) {
jknowles 2:14dc9a7c52ac 54 key = Keyboard_handler(bufr);
jknowles 2:14dc9a7c52ac 55 if (key == KEY_ENTER_VALUE) break; // to go to another screen ?
jknowles 2:14dc9a7c52ac 56 HAL_Delay(10);
jknowles 2:14dc9a7c52ac 57 }
jknowles 2:14dc9a7c52ac 58 }
jknowles 2:14dc9a7c52ac 59
jknowles 2:14dc9a7c52ac 60
jknowles 2:14dc9a7c52ac 61
jknowles 2:14dc9a7c52ac 62
jknowles 2:14dc9a7c52ac 63
jknowles 2:14dc9a7c52ac 64
jknowles 2:14dc9a7c52ac 65 /* Основная программа */
jknowles 2:14dc9a7c52ac 66 int main(void)
jknowles 2:14dc9a7c52ac 67 {
jknowles 2:14dc9a7c52ac 68 char msg_b[128];
jknowles 2:14dc9a7c52ac 69 int u_tries;
jknowles 2:14dc9a7c52ac 70 char u_name[128];
jknowles 2:14dc9a7c52ac 71 char u_passwd[128];
jknowles 2:14dc9a7c52ac 72 char out_str[128];
jknowles 2:14dc9a7c52ac 73
jknowles 2:14dc9a7c52ac 74 for (u_tries = 0; u_tries < 5; u_tries++)
jknowles 2:14dc9a7c52ac 75 {
jknowles 2:14dc9a7c52ac 76 start_KB_LCD();
jknowles 2:14dc9a7c52ac 77 BSP_LCD_SetFont(&Font24);
jknowles 2:14dc9a7c52ac 78 strcpy(msg_b, "ENTER NAME");
jknowles 2:14dc9a7c52ac 79 BSP_LCD_DisplayStringAtLine(1, (uint8_t *) msg_b);
jknowles 2:14dc9a7c52ac 80 HAL_Delay(2000);
jknowles 2:14dc9a7c52ac 81 get_kbd_str(kb_buffer);
jknowles 2:14dc9a7c52ac 82 strcpy(u_name, kb_buffer);
jknowles 2:14dc9a7c52ac 83 kb_buffer[0] = '\0';
jknowles 2:14dc9a7c52ac 84
jknowles 2:14dc9a7c52ac 85 start_KB_LCD();
jknowles 2:14dc9a7c52ac 86 BSP_LCD_SetFont(&Font24);
jknowles 2:14dc9a7c52ac 87 strcpy(msg_b, "ENTER PASSWORD");
jknowles 2:14dc9a7c52ac 88 BSP_LCD_DisplayStringAtLine(1, (uint8_t *) msg_b);
jknowles 2:14dc9a7c52ac 89 HAL_Delay(2000);
jknowles 2:14dc9a7c52ac 90 get_kbd_str(kb_buffer);
jknowles 2:14dc9a7c52ac 91 strcpy(u_passwd, kb_buffer);
jknowles 2:14dc9a7c52ac 92 kb_buffer[0] = '\0';
jknowles 2:14dc9a7c52ac 93
jknowles 2:14dc9a7c52ac 94 start_KB_LCD();
jknowles 2:14dc9a7c52ac 95 BSP_LCD_SetFont(&Font24);
jknowles 2:14dc9a7c52ac 96 strcpy(out_str, "USER NAME: ");
jknowles 2:14dc9a7c52ac 97 strcat(out_str, u_name);
jknowles 2:14dc9a7c52ac 98 BSP_LCD_DisplayStringAtLine(2, (uint8_t *) out_str);
jknowles 2:14dc9a7c52ac 99 strcpy(out_str, "USER PASWD: ");
jknowles 2:14dc9a7c52ac 100 strcat(out_str, u_passwd);
jknowles 2:14dc9a7c52ac 101 BSP_LCD_DisplayStringAtLine(4, (uint8_t *) out_str);
jknowles 2:14dc9a7c52ac 102 HAL_Delay(1500);
jknowles 2:14dc9a7c52ac 103
jknowles 2:14dc9a7c52ac 104
jknowles 2:14dc9a7c52ac 105
jknowles 2:14dc9a7c52ac 106
jknowles 2:14dc9a7c52ac 107 }
jknowles 2:14dc9a7c52ac 108
jknowles 2:14dc9a7c52ac 109
Faberge 0:3ea368f65bca 110 }