From 755b3ea825782472d7a9dc2e8c0d5dd77af1d18a Mon Sep 17 00:00:00 2001 From: fvanroie <15969459+fvanroie@users.noreply.github.com> Date: Wed, 13 Jan 2021 00:10:22 +0100 Subject: [PATCH] Add invert_display runtime option --- lib/lv_drv_fsmc_ili9341/fsmc_ili9341.cpp | 88 ++++++++++++------------ lib/lv_drv_fsmc_ili9341/fsmc_ili9341.h | 36 +++++----- 2 files changed, 62 insertions(+), 62 deletions(-) diff --git a/lib/lv_drv_fsmc_ili9341/fsmc_ili9341.cpp b/lib/lv_drv_fsmc_ili9341/fsmc_ili9341.cpp index 3101218a..6b485257 100644 --- a/lib/lv_drv_fsmc_ili9341/fsmc_ili9341.cpp +++ b/lib/lv_drv_fsmc_ili9341/fsmc_ili9341.cpp @@ -11,57 +11,57 @@ #if USE_FSMC_ILI9341 > 0 -#include "fsmc_ili9341.h" + #include "fsmc_ili9341.h" -#include -#include -#include -//#include -#include + #include + #include + #include + //#include + #include -#include "GxTFT_GFX.h" // Hardware-specific library -#include "GxTFT.h" // Hardware-specific library -#define TFT_Class GxTFT + #include "GxTFT_GFX.h" // Hardware-specific library + #include "GxTFT.h" // Hardware-specific library + #define TFT_Class GxTFT -#include "GxIO/GxIO.h" + #include "GxIO/GxIO.h" -// select one GxIO class, -// note: "error: 'GxIO_Class' does not name a type": indicates target board selection mismatch -// this version is for use with Arduino package STM32GENERIC, board "BLACK F407VE/ZE/ZG boards". -// Specific Board "BLACK F407ZG (M4 DEMO)" -// I use it with ST-LINK-V2, Upload method "STLink[Automatic serial = SerialUSB]", USB disabled. -// For Serial I use a Serial to USB converter on PA9, PA10, "SerialUART1". -// https://github.com/danieleff/STM32GENERIC -#if defined(STM32F407ZG) -#include "GxIO/STM32GENERIC/GxIO_STM32F407ZGx_FSMC/GxIO_STM32F407ZGx_FSMC.h" -#else -#include "GxIO/STM32DUINO/GxIO_STM32F4_FSMC/GxIO_STM32F4_FSMC.h" -//#include "myTFTs/my_3.2_TFT_320x240_ILI9341_STM32F407ZGM4_FSMC.h" -#endif -// #include "../GxIO/STM32GENERIC/GxIO_STM32F407ZGM4_FSMC/GxIO_STM32F407ZGM4_FSMC.h" -//#include "../GxIO/STM32DUINO/GxIO_STM32F4_FSMC/GxIO_STM32F4_FSMC.h" -#include "GxCTRL/GxCTRL_ILI9341/GxCTRL_ILI9341.h" // 240x320 -GxIO_Class io; // #define GxIO_Class is in the selected header file -GxCTRL_Class controller(io); // #define GxCTRL_Class is in the selected header file + // select one GxIO class, + // note: "error: 'GxIO_Class' does not name a type": indicates target board selection mismatch + // this version is for use with Arduino package STM32GENERIC, board "BLACK F407VE/ZE/ZG boards". + // Specific Board "BLACK F407ZG (M4 DEMO)" + // I use it with ST-LINK-V2, Upload method "STLink[Automatic serial = SerialUSB]", USB disabled. + // For Serial I use a Serial to USB converter on PA9, PA10, "SerialUART1". + // https://github.com/danieleff/STM32GENERIC + #if defined(STM32F407ZG) + #include "GxIO/STM32GENERIC/GxIO_STM32F407ZGx_FSMC/GxIO_STM32F407ZGx_FSMC.h" + #else + #include "GxIO/STM32DUINO/GxIO_STM32F4_FSMC/GxIO_STM32F4_FSMC.h" + //#include "myTFTs/my_3.2_TFT_320x240_ILI9341_STM32F407ZGM4_FSMC.h" + #endif + // #include "../GxIO/STM32GENERIC/GxIO_STM32F407ZGM4_FSMC/GxIO_STM32F407ZGM4_FSMC.h" + //#include "../GxIO/STM32DUINO/GxIO_STM32F4_FSMC/GxIO_STM32F4_FSMC.h" + #include "GxCTRL/GxCTRL_ILI9341/GxCTRL_ILI9341.h" // 240x320 +GxIO_Class io; // #define GxIO_Class is in the selected header file +GxCTRL_Class controller(io); // #define GxCTRL_Class is in the selected header file TFT_Class tft(io, controller, TFT_WIDTH, TFT_HEIGHT); -#include LV_DRV_DISP_INCLUDE -#include LV_DRV_DELAY_INCLUDE + #include LV_DRV_DISP_INCLUDE + #include LV_DRV_DELAY_INCLUDE -// For 3.2" TFT of bundle 1 of: -// https://www.aliexpress.com/item/STM32F407ZGT6-Development-Board-ARM-M4-STM32F4-cortex-M4-core-Board-Compatibility-Multiple-Extension/32795142050.html -// select one GxCTRL class -#include // 240x320 -#include "GxReadRegisters.h" + // For 3.2" TFT of bundle 1 of: + // https://www.aliexpress.com/item/STM32F407ZGT6-Development-Board-ARM-M4-STM32F4-cortex-M4-core-Board-Compatibility-Multiple-Extension/32795142050.html + // select one GxCTRL class + #include // 240x320 + #include "GxReadRegisters.h" -#include "bootscreen.h" // Sketch tab header for xbm images + #include "bootscreen.h" // Sketch tab header for xbm images -/********************* - * DEFINES - *********************/ -#if !defined(ESP8266) -#define yield() -#endif + /********************* + * DEFINES + *********************/ + #if !defined(ESP8266) + #define yield() + #endif /********************** * TYPEDEFS @@ -86,11 +86,11 @@ TFT_Class tft(io, controller, TFT_WIDTH, TFT_HEIGHT); /** * Initialize the ILI9341 display controller */ -void fsmc_ili9341_init(uint8_t rotation) +void fsmc_ili9341_init(uint8_t rotation, bool invert_display) { tft.init(); tft.setRotation(rotation); - tft.setRotation(rotation); + tft.invertDisplay(invert_display); tft.fillScreen(TFT_DARKCYAN); int x = (tft.width() - logoWidth) / 2; int y = (tft.height() - logoHeight) / 2; diff --git a/lib/lv_drv_fsmc_ili9341/fsmc_ili9341.h b/lib/lv_drv_fsmc_ili9341/fsmc_ili9341.h index 2b78d1ce..3ad82a68 100644 --- a/lib/lv_drv_fsmc_ili9341/fsmc_ili9341.h +++ b/lib/lv_drv_fsmc_ili9341/fsmc_ili9341.h @@ -14,20 +14,20 @@ extern "C" { * INCLUDES *********************/ #ifndef LV_DRV_NO_CONF -#ifdef LV_CONF_INCLUDE_SIMPLE -#include "lv_drv_conf.h" -#else -#include "../../lv_drv_conf.h" -#endif + #ifdef LV_CONF_INCLUDE_SIMPLE + #include "lv_drv_conf.h" + #else + #include "../../lv_drv_conf.h" + #endif #endif -#if USE_FSMC_ILI9341>0 +#if USE_FSMC_ILI9341 > 0 -#ifdef LV_LVGL_H_INCLUDE_SIMPLE -#include "lvgl.h" -#else -#include "lvgl/lvgl.h" -#endif + #ifdef LV_LVGL_H_INCLUDE_SIMPLE + #include "lvgl.h" + #else + #include "lvgl/lvgl.h" + #endif /********************* * DEFINES @@ -40,14 +40,14 @@ extern "C" { /********************** * GLOBAL PROTOTYPES **********************/ -void fsmc_ili9341_init(uint8_t rotation); +void fsmc_ili9341_init(uint8_t rotation, bool invert_display); void fsmc_ili9341_flush(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p); -//void fsmc_ili9341_flush(int32_t x1, int32_t y1, int32_t x2, int32_t y2, lv_color_t * color_p); -//void fsmc_ili9341_fill(int32_t x1, int32_t y1, int32_t x2, int32_t y2, lv_color_t color); -//void fsmc_ili9341_map(int32_t x1, int32_t y1, int32_t x2, int32_t y2, lv_color_t * color_p); -/********************** - * MACROS - **********************/ + // void fsmc_ili9341_flush(int32_t x1, int32_t y1, int32_t x2, int32_t y2, lv_color_t * color_p); + // void fsmc_ili9341_fill(int32_t x1, int32_t y1, int32_t x2, int32_t y2, lv_color_t color); + // void fsmc_ili9341_map(int32_t x1, int32_t y1, int32_t x2, int32_t y2, lv_color_t * color_p); + /********************** + * MACROS + **********************/ #endif /* USE_FSMC_ILI9341 */