DISCO_H747I_LCD_demo
Dependencies: BSP_DISCO_H747I
main.cpp
- Committer:
- Jerome Coutant
- Date:
- 2019-09-25
- Revision:
- 1:305555b58102
- Parent:
- 0:f1f3c583cf1e
File content as of revision 1:305555b58102:
#include "mbed.h"
#include "stm32h747i_discovery.h"
#include "stm32h747i_discovery_lcd.h"
#include "stlogo.h"
static void DISCO_LCD_INIT(void)
{
BSP_LCD_Init();
BSP_LCD_LayerDefaultInit(1, LCD_FB_START_ADDRESS);
BSP_LCD_SelectLayer(1);
BSP_LCD_SetFont(&LCD_DEFAULT_FONT);
BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
BSP_LCD_Clear(LCD_COLOR_WHITE);
}
static void LCD_Demo_Setup(void)
{
/* Set LCD Demo description */
BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
BSP_LCD_FillRect(0, 0, BSP_LCD_GetXSize(), 80);
BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
BSP_LCD_SetFont(&Font24);
BSP_LCD_DisplayStringAt(0, 10, (uint8_t *)"LCD", CENTER_MODE);
BSP_LCD_SetFont(&Font12);
BSP_LCD_DisplayStringAt(0, 45, (uint8_t *)"This example shows different feature", CENTER_MODE);
/* Set the LCD Text Color */
BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
BSP_LCD_DrawRect(10, 90, BSP_LCD_GetXSize() - 20, BSP_LCD_GetYSize() - 100);
BSP_LCD_DrawRect(11, 91, BSP_LCD_GetXSize() - 22, BSP_LCD_GetYSize() - 102);
}
/**
* @brief Show LCD Features
* @param feature : feature index
* @retval None
*/
static void LCD_Demo_Feature(uint8_t feature)
{
int32_t i = 0;
Point Points[] = {{20, 150}, {80, 150}, {80, 200}};
Point Points2[3];
uint8_t text[50];
BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
BSP_LCD_FillRect(12, 92, BSP_LCD_GetXSize() - 24, BSP_LCD_GetYSize() - 104);
BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
BSP_LCD_SetFont(&Font16);
switch (feature) {
case 0:
/* Text Feature */
BSP_LCD_SetFont(&Font16);
BSP_LCD_DisplayStringAt(14, 100, (uint8_t *)"Left aligned Text", LEFT_MODE);
BSP_LCD_DisplayStringAt(14, 115, (uint8_t *)"Center aligned Text", CENTER_MODE);
BSP_LCD_DisplayStringAt(14, 130, (uint8_t *)"Right aligned Text", RIGHT_MODE);
BSP_LCD_SetFont(&Font24);
BSP_LCD_DisplayStringAt(14, 180, (uint8_t *)"Font24", LEFT_MODE);
BSP_LCD_SetFont(&Font20);
BSP_LCD_DisplayStringAt(BSP_LCD_GetXSize() / 2 - 20, 180, (uint8_t *)"Font20", LEFT_MODE);
BSP_LCD_SetFont(&Font16);
BSP_LCD_DisplayStringAt(BSP_LCD_GetXSize() - 80, 184, (uint8_t *)"Font16", LEFT_MODE);
break;
case 1:
/* Draw misc. Shapes */
BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
BSP_LCD_DrawRect(20, 100, 60, 40);
BSP_LCD_FillRect(100, 100, 60, 40);
BSP_LCD_SetTextColor(LCD_COLOR_GRAY);
BSP_LCD_DrawCircle(BSP_LCD_GetXSize() - 120, 120, 20);
BSP_LCD_FillCircle(BSP_LCD_GetXSize() - 40, 120, 20);
BSP_LCD_SetTextColor(LCD_COLOR_GREEN);
BSP_LCD_DrawPolygon(Points, 3);
BSP_LCD_SetTextColor(LCD_COLOR_RED);
BSP_LCD_DrawEllipse(130, 170, 30, 20);
BSP_LCD_FillEllipse(200, 170, 30, 20);
BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
BSP_LCD_DrawHLine(20, BSP_LCD_GetYSize() - 30, BSP_LCD_GetXSize() / 5);
BSP_LCD_DrawLine(100, BSP_LCD_GetYSize() - 20, 230, BSP_LCD_GetYSize() - 50);
BSP_LCD_DrawLine(100, BSP_LCD_GetYSize() - 50, 230, BSP_LCD_GetYSize() - 20);
Points2[0].X = BSP_LCD_GetXSize() - 80;
Points2[0].Y = 150;
Points2[1].X = BSP_LCD_GetXSize() - 20;
Points2[1].Y = 150;
Points2[2].X = BSP_LCD_GetXSize() - 20;
Points2[2].Y = 200;
BSP_LCD_SetTextColor(LCD_COLOR_GREEN);
BSP_LCD_FillPolygon(Points2, 3);
break;
case 2:
/* Draw Bitmap */
BSP_LCD_DrawBitmap(20, 100, (uint8_t *)stlogo);
HAL_Delay(500);
BSP_LCD_DrawBitmap(BSP_LCD_GetXSize() / 2 - 40, 100, (uint8_t *)stlogo);
HAL_Delay(500);
BSP_LCD_DrawBitmap(BSP_LCD_GetXSize() - 100, 100, (uint8_t *)stlogo);
HAL_Delay(500);
BSP_LCD_DrawBitmap(20, BSP_LCD_GetYSize() - 80, (uint8_t *)stlogo);
HAL_Delay(500);
BSP_LCD_DrawBitmap(BSP_LCD_GetXSize() / 2 - 40, BSP_LCD_GetYSize() - 80, (uint8_t *)stlogo);
HAL_Delay(500);
BSP_LCD_DrawBitmap(BSP_LCD_GetXSize() - 100, BSP_LCD_GetYSize() - 80, (uint8_t *)stlogo);
HAL_Delay(500);
break;
case 3:
/* Set the LCD Back Color and Text Color*/
BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
BSP_LCD_SetTextColor(LCD_COLOR_GREEN);
BSP_LCD_SetFont(&Font24);
/* Set the brightness */
for (i = 100; i >= 0; i -= 10) {
sprintf((char *)text, " Brightness = %d ", (int)i);
BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize() / 2 + 45, (uint8_t *)text, CENTER_MODE);
BSP_LCD_SetBrightness(i);
HAL_Delay(300);
}
for (i = 0; i <= 100; i += 10) {
sprintf((char *)text, " Brightness = %d ", (int)i);
BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize() / 2 + 45, (uint8_t *)text, CENTER_MODE);
BSP_LCD_SetBrightness(i);
HAL_Delay(300);
}
break;
}
}
int main()
{
printf("\nSTART\n");
DISCO_LCD_INIT();
LCD_Demo_Setup();
while (1) {
for (int LCD_Feature = 0; LCD_Feature < 4; ++LCD_Feature) {
printf("Demo LCD feature %d\n", LCD_Feature);
LCD_Demo_Feature(LCD_Feature);
HAL_Delay(10000);
}
}
}