Basic example showing how to drive the LCD

Dependencies:   BSP_DISCO_F769NI

main.cpp

Committer:
Jerome Coutant
Date:
2019-11-15
Revision:
3:45a625d2dcc4
Parent:
0:db5cf2d28be1

File content as of revision 3:45a625d2dcc4:

#include "mbed.h"
#include "stm32f769i_discovery_lcd.h"
#include "stlogo.h"

uint32_t Xsize = 0;
uint32_t Ysize = 0;

/**
  * @brief  Show LCD Features
  * @param  feature : feature index
  * @retval None
  */
static void LCD_Show_Feature(uint8_t feature)
{
    Point Points[] = {{20, 150}, {80, 150}, {80, 200}};
    Point Points2[3];

    Points2[0].X = Xsize - 80;
    Points2[0].Y = 150;
    Points2[1].X = Xsize - 20;
    Points2[1].Y = 150;
    Points2[2].X = Xsize - 20;
    Points2[2].Y = 200;

    BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
    BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
    BSP_LCD_FillRect(12, 92, Xsize - 24, Ysize - 104);
    BSP_LCD_SetTextColor(LCD_COLOR_BLACK);

    switch (feature) {
        case 0:
            /* Text Feature */

            BSP_LCD_DisplayStringAt(14, 100, (uint8_t *)"Left aligned Text", LEFT_MODE);
            BSP_LCD_DisplayStringAt(0, 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(Xsize / 2 - 20, 180, (uint8_t *)"Font20", LEFT_MODE);
            BSP_LCD_SetFont(&Font16);
            BSP_LCD_DisplayStringAt(Xsize - 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(Xsize - 120, 120, 20);
            BSP_LCD_FillCircle(Xsize - 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, Ysize - 30, Xsize / 5);
            BSP_LCD_DrawLine(100, Ysize - 20, 230, Ysize - 50);
            BSP_LCD_DrawLine(100, Ysize - 50, 230, Ysize - 20);

            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(Xsize / 2 - 40, 100, (uint8_t *)stlogo);
            HAL_Delay(500);

            BSP_LCD_DrawBitmap(Xsize - 100, 100, (uint8_t *)stlogo);
            HAL_Delay(500);

            BSP_LCD_DrawBitmap(20, Ysize - 80, (uint8_t *)stlogo);
            HAL_Delay(500);

            BSP_LCD_DrawBitmap(Xsize / 2 - 40, Ysize - 80, (uint8_t *)stlogo);
            HAL_Delay(500);

            BSP_LCD_DrawBitmap(Xsize - 100, Ysize - 80, (uint8_t *)stlogo);
            HAL_Delay(500);
            break;
    }
}


int main()
{
    uint8_t LCD_Feature = 0;

    BSP_LCD_Init();
    // BSP_LCD_InitEx(LCD_ORIENTATION_PORTRAIT);
    BSP_LCD_LayerDefaultInit(0, LCD_FB_START_ADDRESS);
    BSP_LCD_SelectLayer(0);

    Xsize = BSP_LCD_GetXSize();
    Ysize = BSP_LCD_GetYSize();

    BSP_LCD_Clear(LCD_COLOR_WHITE);
    BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
    BSP_LCD_FillRect(0, 0, Xsize, 80);
    BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
    BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
    BSP_LCD_SetFont(&Font24);
    BSP_LCD_DisplayStringAt(0, 0, (uint8_t *)"MBED LCD EXAMPLE", CENTER_MODE);
    BSP_LCD_SetFont(&Font12);
    BSP_LCD_DisplayStringAt(0, 30, (uint8_t *)"DISCOVERY STM32F769NI", CENTER_MODE);

    BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
    BSP_LCD_DrawRect(10, 90, Xsize - 20, Ysize - 100);
    BSP_LCD_DrawRect(11, 91, Xsize - 22, Ysize - 102);

    HAL_Delay(1000);

    while (1) {
        LCD_Show_Feature(LCD_Feature);
        HAL_Delay(3000);

        LCD_Feature++;
        if (LCD_Feature == 3) {
            LCD_Feature = 0;
        }
    }
}