Library for virtual onscreen keyboard for STM32F746 Disco board
Dependencies: BSP_DISCO_F746NG mbed
main.cpp@0:3ea368f65bca, 2016-09-17 (annotated)
- 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?
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; |
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 | } |