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
- Committer:
- jknowles
- Date:
- 2017-02-15
- Revision:
- 2:14dc9a7c52ac
- Parent:
- 1:25b8d7bfc7d4
- Child:
- 3:12b494808ffa
File content as of revision 2:14dc9a7c52ac:
/* ******************************************************************************* * Пример работы экранной клавиатуры на демо-плате STM32F746NG Discovery с * использованием стандартного набора библиотек BSP и пользовательской * библиотеки "keyboard.h" ******************************************************************************* */ /* Добавляем библиотеку для работы с LCD */ #include "stm32746g_discovery_lcd.h" /* Добавляем библиотеку экранной клавиатуры */ #include "keyboard.h" /* Вспомогательные переменые */ uint8_t i; uint8_t key; uint8_t len; /* Пользовательский буфер */ char kb_buffer[45]; void start_KB_LCD() { /* Инициализация дисплея */ /* Включаем дисплей */ /* Настраиваем первый и второй слои дисплея */ BSP_LCD_Init(); BSP_LCD_LayerDefaultInit(0, LCD_FB_START_ADDRESS); BSP_LCD_LayerDefaultInit(1, LCD_FB_START_ADDRESS + (BSP_LCD_GetXSize() * BSP_LCD_GetYSize() * 4)); BSP_LCD_DisplayOn(); BSP_LCD_SelectLayer(0); BSP_LCD_Clear(LCD_COLOR_WHITE); BSP_LCD_SelectLayer(1); BSP_LCD_Clear(LCD_COLOR_BLACK); BSP_LCD_SetTransparency(0, 0); BSP_LCD_SetTransparency(1, 100); /* Настраиваем цвет фона экрана и цвет текста, а также шрифт */ BSP_LCD_SetTextColor(LCD_COLOR_WHITE); BSP_LCD_SetBackColor(LCD_COLOR_BLACK); BSP_LCD_SetFont(&Font16); /* Инициализация тач-экрана*/ BSP_TS_Init(BSP_LCD_GetXSize(), BSP_LCD_GetYSize()); } void get_kbd_str(char *bufr) { start_KB_LCD(); Keyboard_init(0, 80); while(1) { key = Keyboard_handler(bufr); if (key == KEY_ENTER_VALUE) break; // to go to another screen ? HAL_Delay(10); } } /* Основная программа */ int main(void) { char msg_b[128]; int u_tries; char u_name[128]; char u_passwd[128]; char out_str[128]; for (u_tries = 0; u_tries < 5; u_tries++) { start_KB_LCD(); BSP_LCD_SetFont(&Font24); strcpy(msg_b, "ENTER NAME"); BSP_LCD_DisplayStringAtLine(1, (uint8_t *) msg_b); HAL_Delay(2000); get_kbd_str(kb_buffer); strcpy(u_name, kb_buffer); kb_buffer[0] = '\0'; start_KB_LCD(); BSP_LCD_SetFont(&Font24); strcpy(msg_b, "ENTER PASSWORD"); BSP_LCD_DisplayStringAtLine(1, (uint8_t *) msg_b); HAL_Delay(2000); get_kbd_str(kb_buffer); strcpy(u_passwd, kb_buffer); kb_buffer[0] = '\0'; start_KB_LCD(); BSP_LCD_SetFont(&Font24); strcpy(out_str, "USER NAME: "); strcat(out_str, u_name); BSP_LCD_DisplayStringAtLine(2, (uint8_t *) out_str); strcpy(out_str, "USER PASWD: "); strcat(out_str, u_passwd); BSP_LCD_DisplayStringAtLine(4, (uint8_t *) out_str); HAL_Delay(1500); } }