/** * @brief Displays on TFT Images or error messages when error occurred. * @param None * @retval None */ static void TFT_DisplayImages(void) { uint32_t bmplen = 0x00; uint32_t checkstatus = 0x00; uint32_t filesnumbers = 0x00; uint32_t joystickstatus = JOY_NONE; uint32_t bmpcounter = 0x00; DIR directory; FRESULT res; /* Initialize the Joystick available on adafruit 1.8" TFT shield */ BSP_JOY_Init(); /* Welcome message */ TFT_DisplayMenu(); /* Open directory */ res = f_opendir(&directory, "/"); if((res != FR_OK)) { if(res == FR_NO_FILESYSTEM) { /* Display message: SD card not FAT formated */ TFT_DisplayErrorMessage(SD_CARD_NOT_FORMATTED); } else { /* Display message: Fail to open directory */ TFT_DisplayErrorMessage(SD_CARD_OPEN_FAIL); } } /* Get number of bitmap files */ filesnumbers = Storage_GetDirectoryBitmapFiles ("/", pDirectoryFiles); /* Set bitmap counter to display first image */ bmpcounter = 1; while (1) { /* Get JoyStick status */ joystickstatus = BSP_JOY_GetState(); if(joystickstatus == JOY_SEL) { JoystickValue++; if (JoystickValue > 2) { JoystickValue = 1; } joystickstatus = JOY_NONE; } /*## Display BMP pictures in Automatic mode ##############################*/ if(JoystickValue == 1) { sprintf((char*)str, "%-11.11s", pDirectoryFiles[bmpcounter -1]); checkstatus = Storage_CheckBitmapFile((const char*)str, &bmplen); if(checkstatus == 0) { /* Format the string */ checkstatus = Storage_OpenReadFile(POSITION_X_BITMAP, POSITION_Y_BITMAP, (const char*)str); } if (checkstatus == 1) { /* Display message: File not supported */ TFT_DisplayErrorMessage(SD_CARD_FILE_NOT_SUPPORTED); } bmpcounter++; if(bmpcounter > filesnumbers) { bmpcounter = 1; } } /*## Display BMP pictures in Manual mode #################################*/ if(JoystickValue == 2) { if(joystickstatus == JOY_RIGHT) { if((bmpcounter + 1) > filesnumbers) { bmpcounter = 1; } else { bmpcounter++; } sprintf ((char*)str, "%-11.11s", pDirectoryFiles[bmpcounter - 1]); checkstatus = Storage_CheckBitmapFile((const char*)str, &bmplen); if(checkstatus == 0) { /* Format the string */ Storage_OpenReadFile(POSITION_X_BITMAP, POSITION_Y_BITMAP, (const char*)str); } if(checkstatus == 1) { /* Display message: File not supported */ TFT_DisplayErrorMessage(SD_CARD_FILE_NOT_SUPPORTED); } joystickstatus = JOY_NONE; JoystickValue = 2; } else if(joystickstatus == JOY_LEFT) { if((bmpcounter - 1) == 0) { bmpcounter = filesnumbers; } else { bmpcounter--; } sprintf ((char*)str, "%-11.11s", pDirectoryFiles[bmpcounter - 1]); checkstatus = Storage_CheckBitmapFile((const char*)str, &bmplen); if(checkstatus == 0) { /* Format the string */ Storage_OpenReadFile(POSITION_X_BITMAP, POSITION_Y_BITMAP, (const char*)str); } if (checkstatus == 1) { /* Display message: File not supported */ TFT_DisplayErrorMessage(SD_CARD_FILE_NOT_SUPPORTED); } joystickstatus = JOY_NONE; JoystickValue = 2; } } } }
/** * @brief Main program * @param None * @retval None */ int main(void) { uint32_t counter = 0, transparency = 0; uint8_t str[30]; /*!< At this stage the microcontroller clock setting is already configured, this is done through SystemInit() function which is called from startup files (startup_stm32f429_439xx.s) before to branch to application main. */ /* TAMPER button will be used */ STM_EVAL_PBInit(BUTTON_TAMPER, BUTTON_MODE_GPIO); /* SysTick end of count event each 10ms */ SysTick_Config(SystemCoreClock / 1000); /* Configure LCD */ LCD_Config(); /* SD Card Configuration */ SDCard_Config(); /* Configure the File System */ FileSystem_Config(); /* Get the BMP file names on root directory */ ubNumberOfFiles = Storage_GetDirectoryBitmapFiles("/PICT", pDirectoryFiles); if (ubNumberOfFiles == 0) { for (counter = 0; counter < MAX_BMP_FILES; counter++) { free(pDirectoryFiles[counter]); } LCD_DisplayStringLine(LCD_LINE_8, (uint8_t*)" No Bitmap files... "); while(1) { } } while(1) { counter = 0; while ((counter) < ubNumberOfFiles) { /* Step1 : Display on Foreground layer -------------------------------*/ /* Format the string */ sprintf ((char*)str, "PICT/%-11.11s", pDirectoryFiles[counter]); if (Storage_CheckBitmapFile((const char*)str, &uwBmplen) == 0) { /* Format the string */ sprintf ((char*)str, "PICT/%-11.11s", pDirectoryFiles[counter]); /* Set LCD foreground Layer */ LCD_SetLayer(LCD_FOREGROUND_LAYER); /* Open a file and copy its content to an internal buffer */ Storage_OpenReadFile(uwInternelBuffer, (const char*)str); /* Write bmp file on LCD frame buffer */ LCD_WriteBMP(uwInternelBuffer); /* Configure the transparency for background layer : Increase the transparency */ for (transparency = 0; transparency < 255; (transparency++)) { LCD_SetTransparency(transparency); /* Insert a delay of display */ Delay(5); } /* Wait for tamper button pressed */ while (STM_EVAL_PBGetState(BUTTON_TAMPER) == Bit_SET) { } /* Configure the transparency for foreground layer : decrease the transparency */ for (transparency = 255; transparency > 0; transparency--) { LCD_SetTransparency(transparency); /* Insert a delay of display */ Delay(5); } /* Jump to the next image */ counter++; /* Step2 : Display on Background layer -----------------------------*/ /* Format the string */ sprintf ((char*)str, "PICT/%-11.11s", pDirectoryFiles[counter]); if ((Storage_CheckBitmapFile((const char*)str, &uwBmplen) == 0) || (counter < (ubNumberOfFiles))) { /* Connect the Output Buffer to LCD Background Layer */ LCD_SetLayer(LCD_BACKGROUND_LAYER); /* Format the string */ sprintf ((char*)str, "PICT/%-11.11s", pDirectoryFiles[counter]); /* Open a file and copy its content to an internal buffer */ Storage_OpenReadFile(uwInternelBuffer, (const char*)str); /* Write bmp file on LCD frame buffer */ LCD_WriteBMP(uwInternelBuffer); /* Configure the transparency for background layer : decrease the transparency */ for (transparency = 0; transparency < 255; (transparency++)) { LCD_SetTransparency(transparency); /* Insert a delay of display */ Delay(5); } /* wait for tamper button pressed */ while (STM_EVAL_PBGetState(BUTTON_TAMPER) == Bit_SET) { } /* Step3 : -------------------------------------------------------*/ /* Configure the transparency for background layer : Increase the transparency */ for (transparency = 255; transparency > 0; transparency--) { LCD_SetTransparency(transparency); /* Insert a delay of display */ Delay(5); } counter++; } else if (Storage_CheckBitmapFile((const char*)str, &uwBmplen) == 0) { /* Set the Text Color */ LCD_SetTextColor(LCD_COLOR_RED); LCD_DisplayStringLine(LCD_LINE_7, (uint8_t *) str); LCD_DisplayStringLine(LCD_LINE_8, (uint8_t*)" File type not supported. "); while(1) { } } } } } }
/** * @brief Main program * @param None * @retval None */ int main(void) { uwInternelBuffer = (uint8_t *)0xC0260000; uint32_t counter = 0; uint8_t str[30]; /* STM32F4xx HAL library initialization: - Configure the Flash prefetch, instruction and Data caches - Configure the Systick to generate an interrupt each 1 msec - Set NVIC Group Priority to 4 - Global MSP (MCU Support Package) initialization */ HAL_Init(); /* Configure the system clock to 175 MHz */ SystemClock_Config(); /* Configure LED3 */ BSP_LED_Init(LED3); /*##-1- Configure LCD ######################################################*/ LCD_Config(); /*##-2- Link the SD Card disk I/O driver ###################################*/ if(FATFS_LinkDriver(&SD_Driver, SD_Path) != 0) { Error_Handler(); } else { /*##-3- Initialize the Directory Files pointers (heap) ###################*/ for (counter = 0; counter < MAX_BMP_FILES; counter++) { pDirectoryFiles[counter] = malloc(MAX_BMP_FILE_NAME); if(pDirectoryFiles[counter] == NULL) { /* Set the Text Color */ BSP_LCD_SetTextColor(LCD_COLOR_RED); BSP_LCD_DisplayStringAtLine(8, (uint8_t*)" Cannot allocate memory "); while(1) { } } } /*##-4- Display Background picture #######################################*/ /* Select Background Layer */ BSP_LCD_SelectLayer(0); /* Register the file system object to the FatFs module */ if(f_mount(&SD_FatFs, (TCHAR const*)SD_Path, 0) != FR_OK) { /* FatFs Initialization Error */ /* Set the Text Color */ BSP_LCD_SetTextColor(LCD_COLOR_RED); BSP_LCD_DisplayStringAtLine(8, (uint8_t*)" FatFs Initialization Error "); } else { /* Open directory */ if (f_opendir(&directory, (TCHAR const*)"/BACK") != FR_OK) { /* Set the Text Color */ BSP_LCD_SetTextColor(LCD_COLOR_RED); BSP_LCD_DisplayStringAtLine(8, (uint8_t*)" Open directory.. fails"); while(1) { } } } if (Storage_CheckBitmapFile("BACK/image.bmp", &uwBmplen) == 0) { /* Format the string */ Storage_OpenReadFile(uwInternelBuffer, "BACK/image.bmp"); /* Write bmp file on LCD frame buffer */ BSP_LCD_DrawBitmap(0, 0, uwInternelBuffer); } else { /* Set the Text Color */ BSP_LCD_SetTextColor(LCD_COLOR_RED); BSP_LCD_DisplayStringAtLine(8, (uint8_t*)" File type not supported. "); while(1) { } } /*##-5- Display Foreground picture #######################################*/ /* Select Foreground Layer */ BSP_LCD_SelectLayer(1); /* Decrease the foreground transprency */ BSP_LCD_SetTransparency(1, 200); /* Get the BMP file names on root directory */ ubNumberOfFiles = Storage_GetDirectoryBitmapFiles("/TOP", pDirectoryFiles); if (ubNumberOfFiles == 0) { for (counter = 0; counter < MAX_BMP_FILES; counter++) { free(pDirectoryFiles[counter]); } /* Set the Text Color */ BSP_LCD_SetTextColor(LCD_COLOR_RED); BSP_LCD_DisplayStringAtLine(8, (uint8_t*)" No Bitmap files... "); while(1) { } } } /* Infinite loop */ while(1) { counter = 0; while (counter < ubNumberOfFiles) { /* Format the string */ sprintf ((char*)str, "TOP/%-11.11s", pDirectoryFiles[counter]); if (Storage_CheckBitmapFile((const char*)str, &uwBmplen) == 0) { /* Format the string */ sprintf ((char*)str, "TOP/%-11.11s", pDirectoryFiles[counter]); /* Open a file and copy its content to a buffer */ Storage_OpenReadFile(uwInternelBuffer, (const char*)str); HAL_Delay(100); /* Write bmp file on LCD frame buffer */ BSP_LCD_DrawBitmap(0, 0, uwInternelBuffer); /* Jump to next image */ counter++; } else { /* Set the Text Color */ BSP_LCD_SetTextColor(LCD_COLOR_RED); BSP_LCD_DisplayStringAtLine(7, (uint8_t *) str); BSP_LCD_DisplayStringAtLine(8, (uint8_t*)" File type not supported. "); while(1) { } } } } }
/** * @brief Main program * @param None * @retval None */ int main(void) { uint32_t counter = 0; uint8_t str[30]; /*!< At this stage the microcontroller clock setting is already configured, this is done through SystemInit() function which is called from startup files (startup_stm32f429_439xx.s) before to branch to application main. */ /* Example resources configuration -----------------------------------------*/ /* Configure LCD */ LCD_Config(); /* Configure SD Card */ SDCard_Config(); /* Configure the File System */ FileSystem_Config(); /* Display Background picture ----------------------------------------------*/ /* Set Background Layer */ LCD_SetLayer(LCD_BACKGROUND_LAYER); /* Open directory */ if (f_opendir(&directory, "/BACK") != FR_OK) { /* Set the Text Color */ LCD_SetTextColor(LCD_COLOR_RED); LCD_DisplayStringLine(LCD_LINE_8, (uint8_t*)" Open directory.. fails"); while(1) { } } if (Storage_CheckBitmapFile("BACK/image.bmp", &uwBmplen) == 0) { /* Format the string */ Storage_OpenReadFile(uwInternelBuffer, "BACK/image.bmp"); /* Write bmp file on LCD frame buffer */ LCD_WriteBMP(uwInternelBuffer); } else { /* Set the Text Color */ LCD_SetTextColor(LCD_COLOR_RED); LCD_DisplayStringLine(LCD_LINE_8, (uint8_t*)" File type not supported. "); while(1) { } } /* Display Foreground pictures ---------------------------------------------*/ /* Set Foreground Layer */ LCD_SetLayer(LCD_FOREGROUND_LAYER); /* Decrease the foreground transprency */ LCD_SetTransparency(200); /* Get the BMP file names on root directory */ ubNumberOfFiles = Storage_GetDirectoryBitmapFiles("/TOP", pDirectoryFiles); if (ubNumberOfFiles == 0) { for (counter = 0; counter < MAX_BMP_FILES; counter++) { free(pDirectoryFiles[counter]); } /* Set the Text Color */ LCD_SetTextColor(LCD_COLOR_RED); LCD_DisplayStringLine(LCD_LINE_8, (uint8_t*)" No Bitmap files... "); while(1) { } } while(1) { counter = 0; while (counter < ubNumberOfFiles) { /* Format the string */ sprintf ((char*)str, "TOP/%-11.11s", pDirectoryFiles[counter]); if (Storage_CheckBitmapFile((const char*)str, &uwBmplen) == 0) { /* Format the string */ sprintf ((char*)str, "TOP/%-11.11s", pDirectoryFiles[counter]); /* Open a file and copy its content to a buffer */ Storage_OpenReadFile(uwInternelBuffer, (const char*)str); /* Write bmp file on LCD frame buffer */ LCD_WriteBMP(uwInternelBuffer); /* jump to next image */ counter++; } else { /* Set the Text Color */ LCD_SetTextColor(LCD_COLOR_RED); LCD_DisplayStringLine(LCD_LINE_7, (uint8_t *) str); LCD_DisplayStringLine(LCD_LINE_8, (uint8_t*)" File type not supported. "); while(1) { } } } } }
/** * @brief Main program * @param None * @retval None */ int main(void) { uint32_t counter = 0, transparency = 0; uint8_t str[30]; uwInternelBuffer = (uint8_t *)0xC0260000; /* Enable the CPU Cache */ CPU_CACHE_Enable(); /* STM32F7xx HAL library initialization: - Configure the Flash ART accelerator on ITCM interface - Configure the Systick to generate an interrupt each 1 msec - Set NVIC Group Priority to 4 - Global MSP (MCU Support Package) initialization */ HAL_Init(); /* Configure the system clock to 200 MHz */ SystemClock_Config(); /* Configure LED3 */ BSP_LED_Init(LED3); /*##-1- Configure LCD ######################################################*/ LCD_Config(); /* Configure TAMPER Button */ BSP_PB_Init(BUTTON_TAMPER, BUTTON_MODE_GPIO); BSP_SD_Init(); while(BSP_SD_IsDetected() != SD_PRESENT) { BSP_LCD_SetTextColor(LCD_COLOR_RED); BSP_LCD_DisplayStringAtLine(8, (uint8_t*)" Please insert SD Card "); } BSP_LCD_Clear(LCD_COLOR_BLACK); /*##-2- Link the SD Card disk I/O driver ###################################*/ if(FATFS_LinkDriver(&SD_Driver, SD_Path) == 0) { /*##-3- Initialize the Directory Files pointers (heap) ###################*/ for (counter = 0; counter < MAX_BMP_FILES; counter++) { pDirectoryFiles[counter] = malloc(MAX_BMP_FILE_NAME); if(pDirectoryFiles[counter] == NULL) { /* Set the Text Color */ BSP_LCD_SetTextColor(LCD_COLOR_RED); BSP_LCD_DisplayStringAtLine(8, (uint8_t*)" Cannot allocate memory "); while(1) { } } } /* Get the BMP file names on root directory */ ubNumberOfFiles = Storage_GetDirectoryBitmapFiles("/Media", pDirectoryFiles); if (ubNumberOfFiles == 0) { for (counter = 0; counter < MAX_BMP_FILES; counter++) { free(pDirectoryFiles[counter]); } BSP_LCD_DisplayStringAtLine(8, (uint8_t*)" No Bitmap files... "); while(1) { } } } else { /* FatFs Initialization Error */ Error_Handler(); } while(1) { counter = 0; while ((counter) < ubNumberOfFiles) { /* Step1 : Display on Foreground layer -------------------------------*/ /* Format the string */ sprintf ((char*)str, "Media/%-11.11s", pDirectoryFiles[counter]); if (Storage_CheckBitmapFile((const char*)str, &uwBmplen) == 0) { /* Format the string */ sprintf ((char*)str, "Media/%-11.11s", pDirectoryFiles[counter]); /* Set LCD foreground Layer */ BSP_LCD_SelectLayer(1); /* Open a file and copy its content to an internal buffer */ Storage_OpenReadFile(uwInternelBuffer, (const char*)str); /* Write bmp file on LCD frame buffer */ BSP_LCD_DrawBitmap(0, 0, uwInternelBuffer); /* Configure the transparency for background layer : Increase the transparency */ for (transparency = 0; transparency < 255; (transparency++)) { BSP_LCD_SetTransparency(1, transparency); /* Insert a delay of display */ HAL_Delay(2); } /* Wait for tamper button pressed */ while (BSP_PB_GetState(BUTTON_TAMPER) == RESET) { } /* Configure the transparency for foreground layer : decrease the transparency */ for (transparency = 255; transparency > 0; transparency--) { BSP_LCD_SetTransparency(1, transparency); /* Insert a delay of display */ HAL_Delay(2); } /* Clear the Foreground Layer */ BSP_LCD_Clear(LCD_COLOR_BLACK); /* Jump to the next image */ counter++; /* Step2 : Display on Background layer -----------------------------*/ /* Format the string */ sprintf ((char*)str, "Media/%-11.11s", pDirectoryFiles[counter]); if ((Storage_CheckBitmapFile((const char*)str, &uwBmplen) == 0) || (counter < (ubNumberOfFiles))) { /* Connect the Output Buffer to LCD Background Layer */ BSP_LCD_SelectLayer(0); /* Format the string */ sprintf ((char*)str, "Media/%-11.11s", pDirectoryFiles[counter]); /* Open a file and copy its content to an internal buffer */ Storage_OpenReadFile(uwInternelBuffer, (const char*)str); /* Write bmp file on LCD frame buffer */ BSP_LCD_DrawBitmap(0, 0, uwInternelBuffer); /* Configure the transparency for background layer : decrease the transparency */ for (transparency = 0; transparency < 255; (transparency++)) { BSP_LCD_SetTransparency(0, transparency); /* Insert a delay of display */ HAL_Delay(2); } /* wait for tamper button pressed */ while (BSP_PB_GetState(BUTTON_TAMPER) == RESET) { } /* Step3 : -------------------------------------------------------*/ /* Configure the transparency for background layer : Increase the transparency */ for (transparency = 255; transparency > 0; transparency--) { BSP_LCD_SetTransparency(0, transparency); /* Insert a delay of display */ HAL_Delay(2); } /* Clear the Background Layer */ BSP_LCD_Clear(LCD_COLOR_BLACK); counter++; } else if (Storage_CheckBitmapFile((const char*)str, &uwBmplen) == 0) { /* Set the Text Color */ BSP_LCD_SetTextColor(LCD_COLOR_RED); BSP_LCD_DisplayStringAtLine(7, (uint8_t *) str); BSP_LCD_DisplayStringAtLine(8, (uint8_t*)" File type not supported. "); while(1) { } } } } } }
/** * @brief Main program * @param None * @retval None */ int main(void) { uint32_t counter = 0, transparency = 0; uint8_t str[30]; uwInternalBuffer = (uint8_t *)INTERNAL_BUFFER_START_ADDRESS; /* STM32F4xx HAL library initialization: - Configure the Flash prefetch, instruction and Data caches - Configure the Systick to generate an interrupt each 1 msec - Set NVIC Group Priority to 4 - Global MSP (MCU Support Package) initialization */ HAL_Init(); /* Configure the system clock to 200 MHz */ SystemClock_Config(); /* Configure LED3 */ BSP_LED_Init(LED3); /*##-1- Configure LCD ######################################################*/ LCD_Config(); /*##-2- Link the SD Card disk I/O driver ###################################*/ if(FATFS_LinkDriver(&SD_Driver, SD_Path) == 0) { /*##-3- Initialize the Directory Files pointers (heap) ###################*/ for (counter = 0; counter < MAX_BMP_FILES; counter++) { pDirectoryFiles[counter] = malloc(MAX_BMP_FILE_NAME); if(pDirectoryFiles[counter] == NULL) { /* Set the Text Color */ BSP_LCD_SetTextColor(LCD_COLOR_RED); BSP_LCD_DisplayStringAtLine(8, (uint8_t*)" Cannot allocate memory "); while(1) { ; } } } /* Get the BMP file names on root directory */ ubNumberOfFiles = Storage_GetDirectoryBitmapFiles("/Media", pDirectoryFiles); if (ubNumberOfFiles == 0) { for (counter = 0; counter < MAX_BMP_FILES; counter++) { free(pDirectoryFiles[counter]); } BSP_LCD_DisplayStringAtLine(8, (uint8_t*)" No Bitmap files... "); while(1) { ; } } } else { /* FatFs Initialization Error */ Error_Handler(); } /* Main infinite loop */ while(1) { counter = 0; while ((counter) < ubNumberOfFiles) { /* Step1 : Display on Foreground layer -------------------------------*/ /* Format the string */ sprintf ((char*)str, "Media/%-11.11s", pDirectoryFiles[counter]); if (Storage_CheckBitmapFile((const char*)str, &uwBmplen) == 0) { /* Format the string */ sprintf ((char*)str, "Media/%-11.11s", pDirectoryFiles[counter]); /* Set LCD foreground Layer */ BSP_LCD_SelectLayer(LTDC_ACTIVE_LAYER_FOREGROUND); /* Open a file and copy its content to an internal buffer */ Storage_OpenReadFile(uwInternalBuffer, (const char*)str); /* Write bmp file on LCD frame buffer */ BSP_LCD_DrawBitmap(0, 0, uwInternalBuffer); /* Configure the transparency for background layer : Increase the transparency */ for (transparency = 0; transparency < 255; (transparency++)) { BSP_LCD_SetTransparency(LTDC_ACTIVE_LAYER_FOREGROUND, transparency); /* Insert a delay of display */ HAL_Delay(10); } /* Configure the transparency for foreground layer : decrease the transparency */ for (transparency = 255; transparency > 0; transparency--) { BSP_LCD_SetTransparency(LTDC_ACTIVE_LAYER_FOREGROUND, transparency); /* Insert a delay of display */ HAL_Delay(10); } HAL_Delay(1000); /* Clear the Foreground Layer */ BSP_LCD_Clear(LCD_COLOR_BLACK); /* Jump to the next image */ counter++; /* Step2 : Display on Background layer -----------------------------*/ /* Format the string */ sprintf ((char*)str, "Media/%-11.11s", pDirectoryFiles[counter]); if ((Storage_CheckBitmapFile((const char*)str, &uwBmplen) == 0) || (counter < (ubNumberOfFiles))) { /* Connect the Output Buffer to LCD Background Layer */ BSP_LCD_SelectLayer(LTDC_ACTIVE_LAYER_BACKGROUND); /* Format the string */ sprintf ((char*)str, "Media/%-11.11s", pDirectoryFiles[counter]); /* Open a file and copy its content to an internal buffer */ Storage_OpenReadFile(uwInternalBuffer, (const char*)str); /* Write bmp file on LCD frame buffer */ BSP_LCD_DrawBitmap(0, 0, uwInternalBuffer); /* Configure the transparency for background layer : decrease the transparency */ for (transparency = 0; transparency < 255; (transparency++)) { BSP_LCD_SetTransparency(LTDC_ACTIVE_LAYER_BACKGROUND, transparency); /* Insert a delay of display */ HAL_Delay(10); } HAL_Delay(1000); /* Step3 : -------------------------------------------------------*/ /* Configure the transparency for background layer : Increase the transparency */ for (transparency = 255; transparency > 0; transparency--) { BSP_LCD_SetTransparency(LTDC_ACTIVE_LAYER_BACKGROUND, transparency); /* Insert a delay of display */ HAL_Delay(10); } HAL_Delay(1000); /* Clear the Background Layer */ BSP_LCD_Clear(LCD_COLOR_BLACK); counter++; } else if (Storage_CheckBitmapFile((const char*)str, &uwBmplen) == 0) { /* Set the Text Color */ BSP_LCD_SetTextColor(LCD_COLOR_RED); BSP_LCD_DisplayStringAtLine(7, (uint8_t *) str); BSP_LCD_DisplayStringAtLine(8, (uint8_t*)" File type not supported. "); while(1) { ; } } } } } }