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
main.cpp@2:14dc9a7c52ac, 2017-02-15 (annotated)
- 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?
User | Revision | Line number | New 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 | } |