DISCO_H747I_LCD_demo

Dependencies:   BSP_DISCO_H747I

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "stm32h747i_discovery.h"
00003 #include "stm32h747i_discovery_lcd.h"
00004 #include "stlogo.h"
00005 
00006 static void DISCO_LCD_INIT(void)
00007 {
00008     BSP_LCD_Init();
00009     BSP_LCD_LayerDefaultInit(1, LCD_FB_START_ADDRESS);
00010     BSP_LCD_SelectLayer(1);
00011     BSP_LCD_SetFont(&LCD_DEFAULT_FONT);
00012     BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
00013     BSP_LCD_Clear(LCD_COLOR_WHITE);
00014 }
00015 
00016 static void LCD_Demo_Setup(void)
00017 {
00018     /* Set LCD Demo description */
00019     BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
00020     BSP_LCD_FillRect(0, 0, BSP_LCD_GetXSize(), 80);
00021     BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
00022     BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
00023     BSP_LCD_SetFont(&Font24);
00024     BSP_LCD_DisplayStringAt(0, 10, (uint8_t *)"LCD", CENTER_MODE);
00025     BSP_LCD_SetFont(&Font12);
00026     BSP_LCD_DisplayStringAt(0, 45, (uint8_t *)"This example shows different feature", CENTER_MODE);
00027 
00028     /* Set the LCD Text Color */
00029     BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
00030     BSP_LCD_DrawRect(10, 90, BSP_LCD_GetXSize() - 20, BSP_LCD_GetYSize() - 100);
00031     BSP_LCD_DrawRect(11, 91, BSP_LCD_GetXSize() - 22, BSP_LCD_GetYSize() - 102);
00032 }
00033 
00034 /**
00035   * @brief  Show LCD Features
00036   * @param  feature : feature index
00037   * @retval None
00038   */
00039 static void LCD_Demo_Feature(uint8_t feature)
00040 {
00041     int32_t i = 0;
00042 
00043     Point Points[] = {{20, 150}, {80, 150}, {80, 200}};
00044     Point Points2[3];
00045     uint8_t text[50];
00046 
00047     BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
00048     BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
00049     BSP_LCD_FillRect(12, 92, BSP_LCD_GetXSize() - 24, BSP_LCD_GetYSize() - 104);
00050     BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
00051     BSP_LCD_SetFont(&Font16);
00052 
00053     switch (feature) {
00054         case 0:
00055             /* Text Feature */
00056             BSP_LCD_SetFont(&Font16);
00057             BSP_LCD_DisplayStringAt(14, 100, (uint8_t *)"Left aligned Text", LEFT_MODE);
00058             BSP_LCD_DisplayStringAt(14, 115, (uint8_t *)"Center aligned Text", CENTER_MODE);
00059             BSP_LCD_DisplayStringAt(14, 130, (uint8_t *)"Right aligned Text", RIGHT_MODE);
00060             BSP_LCD_SetFont(&Font24);
00061             BSP_LCD_DisplayStringAt(14, 180, (uint8_t *)"Font24", LEFT_MODE);
00062             BSP_LCD_SetFont(&Font20);
00063             BSP_LCD_DisplayStringAt(BSP_LCD_GetXSize() / 2 - 20, 180, (uint8_t *)"Font20", LEFT_MODE);
00064             BSP_LCD_SetFont(&Font16);
00065             BSP_LCD_DisplayStringAt(BSP_LCD_GetXSize() - 80, 184, (uint8_t *)"Font16", LEFT_MODE);
00066             break;
00067 
00068         case 1:
00069             /* Draw misc. Shapes */
00070             BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
00071             BSP_LCD_DrawRect(20, 100, 60, 40);
00072             BSP_LCD_FillRect(100, 100, 60, 40);
00073 
00074             BSP_LCD_SetTextColor(LCD_COLOR_GRAY);
00075             BSP_LCD_DrawCircle(BSP_LCD_GetXSize() - 120, 120, 20);
00076             BSP_LCD_FillCircle(BSP_LCD_GetXSize() - 40, 120, 20);
00077 
00078             BSP_LCD_SetTextColor(LCD_COLOR_GREEN);
00079             BSP_LCD_DrawPolygon(Points, 3);
00080 
00081             BSP_LCD_SetTextColor(LCD_COLOR_RED);
00082             BSP_LCD_DrawEllipse(130, 170, 30, 20);
00083             BSP_LCD_FillEllipse(200, 170, 30, 20);
00084 
00085             BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
00086             BSP_LCD_DrawHLine(20, BSP_LCD_GetYSize() - 30, BSP_LCD_GetXSize() / 5);
00087             BSP_LCD_DrawLine(100, BSP_LCD_GetYSize() - 20, 230, BSP_LCD_GetYSize() - 50);
00088             BSP_LCD_DrawLine(100, BSP_LCD_GetYSize() - 50, 230, BSP_LCD_GetYSize() - 20);
00089 
00090             Points2[0].X = BSP_LCD_GetXSize() - 80;
00091             Points2[0].Y = 150;
00092             Points2[1].X = BSP_LCD_GetXSize() - 20;
00093             Points2[1].Y = 150;
00094             Points2[2].X = BSP_LCD_GetXSize() - 20;
00095             Points2[2].Y = 200;
00096 
00097             BSP_LCD_SetTextColor(LCD_COLOR_GREEN);
00098             BSP_LCD_FillPolygon(Points2, 3);
00099             break;
00100 
00101         case 2:
00102             /* Draw Bitmap */
00103             BSP_LCD_DrawBitmap(20, 100, (uint8_t *)stlogo);
00104             HAL_Delay(500);
00105 
00106             BSP_LCD_DrawBitmap(BSP_LCD_GetXSize() / 2 - 40, 100, (uint8_t *)stlogo);
00107             HAL_Delay(500);
00108 
00109             BSP_LCD_DrawBitmap(BSP_LCD_GetXSize() - 100, 100, (uint8_t *)stlogo);
00110             HAL_Delay(500);
00111 
00112             BSP_LCD_DrawBitmap(20, BSP_LCD_GetYSize() - 80, (uint8_t *)stlogo);
00113             HAL_Delay(500);
00114 
00115             BSP_LCD_DrawBitmap(BSP_LCD_GetXSize() / 2 - 40, BSP_LCD_GetYSize() - 80, (uint8_t *)stlogo);
00116             HAL_Delay(500);
00117 
00118             BSP_LCD_DrawBitmap(BSP_LCD_GetXSize() - 100, BSP_LCD_GetYSize() - 80, (uint8_t *)stlogo);
00119             HAL_Delay(500);
00120             break;
00121 
00122         case 3:
00123             /* Set the LCD Back Color and Text Color*/
00124             BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
00125             BSP_LCD_SetTextColor(LCD_COLOR_GREEN);
00126             BSP_LCD_SetFont(&Font24);
00127 
00128             /*  Set the brightness */
00129             for (i = 100; i >= 0; i -= 10) {
00130                 sprintf((char *)text, " Brightness  =  %d ", (int)i);
00131                 BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize() / 2 + 45, (uint8_t *)text, CENTER_MODE);
00132                 BSP_LCD_SetBrightness(i);
00133                 HAL_Delay(300);
00134             }
00135 
00136             for (i = 0; i <= 100; i += 10) {
00137                 sprintf((char *)text, " Brightness  =  %d ", (int)i);
00138                 BSP_LCD_DisplayStringAt(0, BSP_LCD_GetYSize() / 2 + 45, (uint8_t *)text, CENTER_MODE);
00139                 BSP_LCD_SetBrightness(i);
00140                 HAL_Delay(300);
00141             }
00142             break;
00143     }
00144 }
00145 
00146 
00147 int main()
00148 {
00149     printf("\nSTART\n");
00150 
00151     DISCO_LCD_INIT();
00152     LCD_Demo_Setup();
00153 
00154     while (1) {
00155         for (int LCD_Feature = 0; LCD_Feature < 4; ++LCD_Feature) {
00156             printf("Demo LCD feature %d\n", LCD_Feature);
00157             LCD_Demo_Feature(LCD_Feature);
00158             HAL_Delay(10000);
00159         }
00160     }
00161 }