Library for virtual onscreen keyboard for STM32F746 Disco board

Dependencies:   BSP_DISCO_F746NG mbed

Committer:
Faberge
Date:
Sat Sep 17 11:36:24 2016 +0000
Revision:
0:3ea368f65bca
First demo example of virtual onscreen keyboard for F746 Disco

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;
Faberge 0:3ea368f65bca 18 uint8_t len;
Faberge 0:3ea368f65bca 19
Faberge 0:3ea368f65bca 20 /* Пользовательский буфер */
Faberge 0:3ea368f65bca 21 char buffer[45];
Faberge 0:3ea368f65bca 22
Faberge 0:3ea368f65bca 23 /* Основная программа */
Faberge 0:3ea368f65bca 24 int main(void)
Faberge 0:3ea368f65bca 25 {
Faberge 0:3ea368f65bca 26 /* Инициализация дисплея */
Faberge 0:3ea368f65bca 27 BSP_LCD_Init();
Faberge 0:3ea368f65bca 28 BSP_LCD_LayerDefaultInit(0, LCD_FB_START_ADDRESS);
Faberge 0:3ea368f65bca 29 BSP_LCD_LayerDefaultInit(1, LCD_FB_START_ADDRESS + (BSP_LCD_GetXSize() * BSP_LCD_GetYSize() * 4));
Faberge 0:3ea368f65bca 30
Faberge 0:3ea368f65bca 31 /* Включаем дисплей */
Faberge 0:3ea368f65bca 32 BSP_LCD_DisplayOn();
Faberge 0:3ea368f65bca 33
Faberge 0:3ea368f65bca 34 /* Настраиваем первый и второй слои дисплея */
Faberge 0:3ea368f65bca 35 BSP_LCD_SelectLayer(0);
Faberge 0:3ea368f65bca 36 BSP_LCD_Clear(LCD_COLOR_WHITE);
Faberge 0:3ea368f65bca 37 BSP_LCD_SelectLayer(1);
Faberge 0:3ea368f65bca 38 BSP_LCD_Clear(LCD_COLOR_BLACK);
Faberge 0:3ea368f65bca 39 BSP_LCD_SetTransparency(0, 0);
Faberge 0:3ea368f65bca 40 BSP_LCD_SetTransparency(1, 100);
Faberge 0:3ea368f65bca 41
Faberge 0:3ea368f65bca 42 /* Настраиваем цвет фона экрана и цвет текста, а также шрифт */
Faberge 0:3ea368f65bca 43 BSP_LCD_SetTextColor(LCD_COLOR_LIGHTGREEN);
Faberge 0:3ea368f65bca 44 BSP_LCD_SetBackColor(LCD_COLOR_BLACK);
Faberge 0:3ea368f65bca 45 BSP_LCD_SetFont(&Font16);
Faberge 0:3ea368f65bca 46
Faberge 0:3ea368f65bca 47 /* Инициализация тач-экрана*/
Faberge 0:3ea368f65bca 48 BSP_TS_Init(BSP_LCD_GetXSize(), BSP_LCD_GetYSize());
Faberge 0:3ea368f65bca 49
Faberge 0:3ea368f65bca 50 /* Инициализация клавиатуры */
Faberge 0:3ea368f65bca 51 Keyboard_init(0, 80);
Faberge 0:3ea368f65bca 52
Faberge 0:3ea368f65bca 53 /* Основной цикл */
Faberge 0:3ea368f65bca 54 while(1)
Faberge 0:3ea368f65bca 55 {
Faberge 0:3ea368f65bca 56 /* Вызываем обработчик экранной клавиатуры */
Faberge 0:3ea368f65bca 57 key = Keyboard_handler(buffer);
Faberge 0:3ea368f65bca 58
Faberge 0:3ea368f65bca 59 /* Если последней нажатой клавишей был "Enter", значит, пользовательский
Faberge 0:3ea368f65bca 60 * ввод завершен и его можно как-то обработать
Faberge 0:3ea368f65bca 61 */
Faberge 0:3ea368f65bca 62 if (key == KEY_ENTER_VALUE)
Faberge 0:3ea368f65bca 63 {
Faberge 0:3ea368f65bca 64 /* Пользовательская реализация обработки ввода должна быть тут */
Faberge 0:3ea368f65bca 65
Faberge 0:3ea368f65bca 66 /* Затираем строчку со старым буфером и отображаем новый */
Faberge 0:3ea368f65bca 67 BSP_LCD_ClearStringLine(1);
Faberge 0:3ea368f65bca 68 BSP_LCD_DisplayStringAtLine(1, (uint8_t *) buffer);
Faberge 0:3ea368f65bca 69 buffer[0] = '\0';
Faberge 0:3ea368f65bca 70 }
Faberge 0:3ea368f65bca 71
Faberge 0:3ea368f65bca 72 /* Задержка на 10 мс */
Faberge 0:3ea368f65bca 73 HAL_Delay(10);
Faberge 0:3ea368f65bca 74 }
Faberge 0:3ea368f65bca 75 }