Jump to content

All Activity

This stream auto-updates     

  1. Past hour
  2. Yesterday
  3. SSD1963- Wrong Colors

    The connection of the physical signals definitely needs to map 1:1 as that wouldn't only have an impact on the color values but also on any other values you write such as initialization values and other commands. I don't have another explanation for this at the moment. What you experienced happens often and so far it was always related to a mismatching config between the display controller and the µGFX configuration. But I guess the most important thing is that you have it working - that makes investigating a lot less frustrating
  4. SSD1963- Wrong Colors

    I do have the MCU connected to the controller well- I mean D0 to D0, D1 to D1 etc. So when I program the controller in RGB mode it should work. After all- by default it is in RGB. I will look into that.
  5. SSD1963- Wrong Colors

    Well, glad to hear that you got it working! RGB vs BRG is really just a different order of the bytes representing the color value. It's up to the display controller to decide which of the two will be used and µGFX simply adapts to that. With display controllers like the one you're using it's usually possible to configure that during initialization. You might want to have a look at that. The 24 bit thing is most likely a packed vs. non-packed issue. But it's hard to say without knowing the exact details. This again is something that can often be configured on more advanced display controllers.
  6. Transplantation of ugfx

    There are three ways to run µGFX on Linux: Directly on the framebuffer On top of the X window manager As an SDL2 application Which one you choose depends on your needs. If you want to run µGFX directly on the framebuffer then you certainly need a Linux kernel with framebuffer support. The µGFX GDISP driver will simply render into the framebuffer device provided by Linux.
  7. SSD1963- Wrong Colors

    Well, I've changed TFT Panel Data Width to 24 bit and in gdisp_lld_config.h changed to GDISP_PIXELFORMAT_RGB565 to GDISP_PIXELFORMAT_BGR565 and it stated to work ;o Any explaination?
  8. Top layer windows (widget overlapping)

    Hello Steffen, As you mentioned yourself the default window manager doesn't handle overlapping windows at all. However, it's possible to write your own window manager. Our community member @Steffan made a demo once:
  9. SSD1963- Wrong Colors

    Hello, Well, after strugling for few hours I need to ask for a hint. I've just got this display: http://www.buydisplay.com/default/7-tft-screen-touch-lcd-display-module-w-ssd1963-controller-board-mcu I am trying to control it with SMT32F103VC. Everything goes well, it initiates and works (although I had to change PLL values- there is 20 MHz clock onboard instead of 10 MHz). But i do have problem with colors. White is yellow, green is super dark green (almost invisable), yellow is very light green, red is very light green, blue is dark red... I don't get it. I am setting it in RGB565 mode, 16 bit- default ugfx settings. I've also checked if I write good values to the RAM- and yes, everything is fine. EVerything else works, like the backlight etc- it means that ssd accepts commands. Any idea what is wrong? Here is init of FSMC code (works with ssd1289): #define GDISP_REG (*((volatile uint16_t *) 0x60000000)) /* RS = 0 */ #define GDISP_RAM (*((volatile uint16_t *) 0x60020000)) /* RS = 1 */ { GPIO_InitTypeDef GPIO_InitStruct; __HAL_RCC_AFIO_CLK_ENABLE(); __HAL_RCC_GPIOD_CLK_ENABLE(); __HAL_RCC_GPIOE_CLK_ENABLE(); GPIO_InitStruct.Pin = GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_14 | GPIO_PIN_15; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); __HAL_RCC_FSMC_CLK_ENABLE(); FSMC_NORSRAM_InitTypeDef FSMC_NORSRAM_InitStruct; FSMC_NORSRAM_TimingTypeDef FSMC_NORSRAM_TimingInitStruct; FSMC_NORSRAM_InitStruct.NSBank = FSMC_NORSRAM_BANK1; FSMC_NORSRAM_InitStruct.DataAddressMux = FSMC_DATA_ADDRESS_MUX_DISABLE; FSMC_NORSRAM_InitStruct.MemoryType = FSMC_MEMORY_TYPE_SRAM; FSMC_NORSRAM_InitStruct.MemoryDataWidth = FSMC_NORSRAM_MEM_BUS_WIDTH_16; FSMC_NORSRAM_InitStruct.BurstAccessMode = FSMC_BURST_ACCESS_MODE_DISABLE; FSMC_NORSRAM_InitStruct.WaitSignalPolarity = FSMC_WAIT_SIGNAL_POLARITY_LOW; FSMC_NORSRAM_InitStruct.WrapMode = FSMC_WRAP_MODE_DISABLE; FSMC_NORSRAM_InitStruct.WaitSignalActive = FSMC_WAIT_TIMING_BEFORE_WS; FSMC_NORSRAM_InitStruct.WriteOperation = FSMC_WRITE_OPERATION_ENABLE; FSMC_NORSRAM_InitStruct.WaitSignal = FSMC_WAIT_SIGNAL_DISABLE; FSMC_NORSRAM_InitStruct.AsynchronousWait = FSMC_ASYNCHRONOUS_WAIT_DISABLE; FSMC_NORSRAM_InitStruct.ExtendedMode = FSMC_EXTENDED_MODE_DISABLE; FSMC_NORSRAM_InitStruct.WriteBurst = FSMC_WRITE_BURST_DISABLE; hal_sram.Instance = FSMC_NORSRAM_DEVICE; hal_sram.Extended = FSMC_NORSRAM_EXTENDED_DEVICE; hal_sram.Init = FSMC_NORSRAM_InitStruct; FSMC_NORSRAM_TimingInitStruct.AddressSetupTime = 2; FSMC_NORSRAM_TimingInitStruct.AddressHoldTime = 1; FSMC_NORSRAM_TimingInitStruct.DataSetupTime = 2; FSMC_NORSRAM_TimingInitStruct.BusTurnAroundDuration = 1; FSMC_NORSRAM_TimingInitStruct.CLKDivision = 2; FSMC_NORSRAM_TimingInitStruct.DataLatency = 2; FSMC_NORSRAM_TimingInitStruct.AccessMode = FSMC_ACCESS_MODE_A; HAL_SRAM_Init(&hal_sram, &FSMC_NORSRAM_TimingInitStruct, NULL); __HAL_AFIO_FSMCNADV_DISCONNECTED(); } Here are the settings (got it from the forum here): #define SCREEN_HSYNC_BACK_PORCH 46 #define SCREEN_HSYNC_FRONT_PORCH 210 #define SCREEN_HSYNC_PULSE 8 #define SCREEN_VSYNC_BACK_PORCH 23 #define SCREEN_VSYNC_FRONT_PORCH 22 #define SCREEN_VSYNC_PULSE 8 static const LCD_Parameters DisplayTimings[] = { // You need one of these array elements per display { 800, 480, // Panel width and height SCREEN_HSYNC_BACK_PORCH, SCREEN_HSYNC_FRONT_PORCH, SCREEN_HSYNC_PULSE, // Horizontal Timings (back porch, front porch, pulse) CALC_PERIOD(800,SCREEN_HSYNC_BACK_PORCH,SCREEN_HSYNC_FRONT_PORCH,SCREEN_HSYNC_PULSE), // Total Horizontal Period (calculated from above line) SCREEN_VSYNC_BACK_PORCH, SCREEN_VSYNC_FRONT_PORCH, SCREEN_VSYNC_PULSE, // Vertical Timings (back porch, front porch, pulse) CALC_PERIOD(480,SCREEN_VSYNC_BACK_PORCH,SCREEN_VSYNC_FRONT_PORCH,SCREEN_VSYNC_PULSE), // Total Vertical Period (calculated from above line) CALC_FPR(800,480,SCREEN_HSYNC_BACK_PORCH,SCREEN_HSYNC_FRONT_PORCH,SCREEN_HSYNC_PULSE,SCREEN_VSYNC_BACK_PORCH,SCREEN_VSYNC_FRONT_PORCH,SCREEN_VSYNC_PULSE,60ULL), // FPR - the 60ULL is the frames per second. Note the ULL! FALSE, // Flip horizontally FALSE // Flip vertically }, };
  10. SSD1963 8Bit FMC STM32F7 CubeMX

    Whats happend? it is only when use Display = TRUE? Description Resource Path Location Type 'FMC_Bank' undeclared (first use in this function) board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 58 C/C++ Problem 'FMC_Bank' undeclared (first use in this function) board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 72 C/C++ Problem 'FMC_Bank1' undeclared (first use in this function) board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 58 C/C++ Problem 'FMC_Bank1' undeclared (first use in this function) board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 72 C/C++ Problem 'FMC_BCR1_MBKEN' undeclared (first use in this function) board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 63 C/C++ Problem 'FMC_BCR1_MBKEN' undeclared (first use in this function) board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 73 C/C++ Problem 'FMC_BCR1_MWID_0' undeclared (first use in this function) board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 63 C/C++ Problem 'FMC_BCR1_MWID_0' undeclared (first use in this function) board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 73 C/C++ Problem 'FMC_BCR1_WREN' undeclared (first use in this function) board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 63 C/C++ Problem 'FMC_BCR1_WREN' undeclared (first use in this function) board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 73 C/C++ Problem 'FMC_BTR1_ADDSET_0' undeclared (first use in this function) board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 72 C/C++ Problem 'FMC_BTR1_ADDSET_1' undeclared (first use in this function) board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 58 C/C++ Problem 'FMC_BTR1_ADDSET_3' undeclared (first use in this function) board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 58 C/C++ Problem 'FMC_BTR1_BUSTURN_0' undeclared (first use in this function) board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 72 C/C++ Problem 'FMC_BTR1_BUSTURN_1' undeclared (first use in this function) board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 60 C/C++ Problem 'FMC_BTR1_BUSTURN_3' undeclared (first use in this function) board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 60 C/C++ Problem 'FMC_BTR1_DATAST_1' undeclared (first use in this function) board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 59 C/C++ Problem 'FMC_BTR1_DATAST_2' undeclared (first use in this function) board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 72 C/C++ Problem 'FMC_BTR1_DATAST_3' undeclared (first use in this function) board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 59 C/C++ Problem 'GPIO_PIN_2' undeclared (first use in this function) board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 80 C/C++ Problem 'GPIO_PIN_RESET' undeclared (first use in this function) board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 80 C/C++ Problem 'GPIO_PIN_SET' undeclared (first use in this function) board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 82 C/C++ Problem 'GPIOC' undeclared (first use in this function) board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 49 C/C++ Problem 'GPIOD' undeclared (first use in this function) board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 50 C/C++ Problem 'GPIOE' undeclared (first use in this function) board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 51 C/C++ Problem 'GPIOE' undeclared (first use in this function) board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 80 C/C++ Problem 'RCC_AHB3ENR_FMCEN' undeclared (first use in this function) board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 46 C/C++ Problem make: *** [uGFX/drivers/gdisp/SSD1963/gdisp_lld_SSD1963.o] Error 1 uglx_ssd1963 C/C++ Problem recipe for target 'uGFX/drivers/gdisp/SSD1963/gdisp_lld_SSD1963.o' failed subdir.mk /uglx_ssd1963/Debug/uGFX/drivers/gdisp/SSD1963 line 18 C/C++ Problem Type 'LCD_Parameters' could not be resolved board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 19 Semantic Error unknown type name 'IOBus' board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 49 C/C++ Problem unknown type name 'IOBus' board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 50 C/C++ Problem unknown type name 'IOBus' board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 51 C/C++ Problem excess elements in scalar initializer board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 49 C/C++ Problem excess elements in scalar initializer board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 50 C/C++ Problem excess elements in scalar initializer board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 51 C/C++ Problem GOS: Raw32 - Make sure you initialize your hardware and the C runtime before calling gfxInit() in your application! gos_raw32.c /uglx_ssd1963/uGFX/src/gos line 32 C/C++ Problem implicit declaration of function 'HAL_GPIO_WritePin' [-Wimplicit-function-declaration] board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 80 C/C++ Problem implicit declaration of function 'PAL_MODE_ALTERNATE' [-Wimplicit-function-declaration] board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 53 C/C++ Problem implicit declaration of function 'palSetBusMode' [-Wimplicit-function-declaration] board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 53 C/C++ Problem implicit declaration of function 'rccEnableAHB3' [-Wimplicit-function-declaration] board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 46 C/C++ Problem (near initialization for 'busC') board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 49 C/C++ Problem (near initialization for 'busD') board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 50 C/C++ Problem (near initialization for 'busE') board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 51 C/C++ Problem each undeclared identifier is reported only once for each function it appears in board_SSD1963.h /uglx_ssd1963/uGFX/drivers/gdisp/SSD1963 line 46 C/C++ Problem
  11. no, a library I found in Mbed works out of the box (for a old version of Mbed OS), then I used this to compare his behaviour (measuring with the oscilloscope) with the behaviour of the project I generated with the GNU MCU Eclipse + CubeMX and followed the instructions on the wiki of uGFX to integrate it on an Eclipse project. I wanted to have this working on Eclipse because of the better debugging possibilities. I was changing the parameters in the main.c (attached on the first post) on the init section of the SPI until the numbers I read on the oscilloscope where the same as in the init sequence for the screen (frequency, polarity, etc.), for that reason these parameter can differ from the ones in the ioc file I will attach now, the valid parameters are the ones in the main.c Is important to have the right parameters in the SPI init, but even when this is correct and the numbers where the same all along the init sequence for the screen, it doesn't work until I added the order for releasing the bus at the end of each transmission. I think this should be corrected on the driver to avoid unnecessary instructions here, the driver I have of Mbed releases the bus between every data-cmd sequence. spi_1-pb6.ioc
  12. Hello Jano, you use Mbed OS with CubeMX and a ready Project from Eclipse? Can you post your IOC file ?
  13. SSD1963 8Bit FMC STM32F7 CubeMX

    Hello Joel, I have adapt the board file, but it dosen't work. board_SSD1963.h
  14. Transplantation of ugfx

    Thanks very much。 If the development board is transplanted on Linux. Do I have to enable Framebuffer?
  15. uGFX + FreeRTOS (on STM32F746-Disco)

    Actually, the problem arises before uGFX initialises FreeRTOS. During the board init the BSP_SDRAM_Initialization_sequence routine is called. In the version of stm32f746g_discovery_sdram.c included with uGFX the call to HAL_Delay(1) included in the ST version of this file is replaced with gfxSleepMilliseconds(1), which actually runs the FreeRTOS command vTaskDelay, but because FreeRTOS has not been initialised at this point it eventually fails and goes into default error handler. I'll have a deeper look later today but in the meantime if anyone know a fix please let me know :-)
  16. Hi hi, i'm trying to have some windows(containers) that are overlapping others. This is a popup menu which is drawn over whatever else is on the screen. With this i now have the problem that if the screen content is updated periodically (i.e new line printed to console) the popup menu is not redrawn. The console will just draw over it and make parts of it vanish unless i manually request a redraw. From what i already gathered the default window manager will only handle overlapping for children widgets of a parent, so in this case the popup window never gets its redraw flag set as it has no parent set. Is there any convenient way to have such toplevel/popup windows with the default window manager or is a custom window manager the only way?
  17. uGFX support for USB mouse with BeagleBone Black

    Don't hesitate to ask if you have any further questions - we're happy to help
  18. License and pricing

    Hello @jano, The pricing on shown on the current version of the website is correct. The $5/device option has been removed.
  19. Transplantation of ugfx

    Hi, The workflow usually looks like this: Create a bare hello-world project on your target that runs without any µGFX stuff at all Integrate µGFX into the build system. Therefore, creating a bare hello-world project for your target that runs with µGFX. It's important to disable all the modules (no GDISP, no GINPUT, ...) Enable the GDISP module. Use the TestStub driver to test the compilation process. Then determine whether you have to write your own display driver or whether you can use an existing one and just modify the board files. Enable the GINPUT module (if required). Determine whether you have to write your own mouse/touch driver or whether you can use an existing one and just modify the board files. Enable GWIN, enjoy. Most of the stuff that happens is outside of µGFX (eg writing the board files, setting up peripherals and so on). The goal is to create an environment that already does everything (correct peripherals initialization and so on) and then just put µGFX on top of that.
  20. License and pricing

    This is what I'm talking about: paying $5/device sold seems like a good choice when I don't know if I can sell more than 50pcs, now the only option is to pay the full licence. Please tell me if the new pricing is fixed, because I need to consider if I will take a different path.
  21. Many thanks for these ideas, I will check them out. At the moment there is enough RAM available, but I don't want to slow down the refresh if possible. There are around 10 labels and icons overlaid on the image at present. I will have a look at both options. Thanks again.
  22. License and pricing

    Hi! The first time I saw uGFX (about a year ago) there was the possibility to make a commercial use of it paying a inexpensive fee for each unit sold with the uGFX on it, now this possibility is gone?
  23. Transplantation of ugfx

    First of all, thank you very much. I like ugfx. very much. I've solved a lot of problems with your help. Now I want to migrate ugfx to any development board. For example, I'm now going to be transplanted to im6ul, and my LCD doesn't know what type it is, of course that's not the point of the problem. I've seen a lot of Wiki's official website.Because I just started, can you tell me the specific steps?
  24. uGFX + FreeRTOS (on STM32F746-Disco)

    Yes using the latest version is a requirement for FreeRTOS as the FreeRTOS support before V2.8 was very buggy. Yes your example code is close, just put the contents of GUIThread into uGFXMain. There is no need to create a seperate task for it as uGFX sets up a task to run uGFXMain. Returning from uGFXMain (as your code does now) is not supported and in some OS's may even cause a panic. There is a gfxconf.h setting that determines if the OS is initialised automatically. By default it is and it requires an explicit define to turn that off. I can't remember off the top of my head the setting but it should start with GFX_OS_...
  25. Last week
  26. uGFX + FreeRTOS (on STM32F746-Disco)

    Hi @inmarket, do you mean something like this: int main(int argc, char* argv[]) { (void)argc; (void)argv; gfxInit(); } void uGFXMain() { /* Create GUI task */ xTaskCreate(GUIThread, "GUI_Thread", 16384, 0, 1, 0); } static void GUIThread(void* pvParameters) { (void)pvParameters; gdispSetBacklight(100); gdispSetContrast(100); vTaskDelay( 200 ); geventListenerInit(&glistener); gwinAttachListener(&glistener); guiCreate(); /* Gui background Task */ while(1) { guiEventLoop(); } } In this instance gfxInit does not try to initialise FreeRTOS and so when it executes the gfxSleepMilliseconds, which expands to the FreeRTOS command of vTaskDelay, it eventually fails and goes into the infinite loop default handler. The first part of my gfxconf.h file contains: #define GFX_USE_OS_FREERTOS TRUE #define GFX_CPU GFX_CPU_CORTEX_M7_FP #define GFX_OS_HEAP_SIZE 16384 #define GFX_OS_CALL_UGFXMAIN TRUE So, I suspect they key question is how do I get gfxInit to initialise FreeRTOS. BTW, I cloned the git repository last night so I am using an up-to-date version. FreeRTOS is v9.0.0 supplied with STM32Cube v 1.8.0 (latest version).
  27. uGFX + FreeRTOS (on STM32F746-Disco)

    Hi@inmarket As suggested by @Joel Bodenmann I was just completing my stepping through of the program. The issue is caused when the gfxSleepMilliseconds routine is called. FreeRTOS then looks to run other tasks (or the idle task) but never returns to gfxInit when the desired delay is completed. I will try your suggested option 2 now.
  28. uGFX + FreeRTOS (on STM32F746-Disco)

    There are two running models with uGFX... 1. gfxInit (optionally) initialises the OS, the display, heap manager etc and then returns. Your application then runs its own event loop etc. 2. gfxInit does the same initialisation as above and then calls uGFXMain(). You put your event loop etc in uGFXMain(). With FreeRTOS the operating system initialisation never returns to the caller thus option 1 is not possible if uGFX is required to initialise the os. It should actually give you a compile error if you try this. The solution is to either tell uGFX not to initialise the OS as you will do it yourself in your main() or to alternatively use option 2. Option 2 is also the preferred methodology for all uGFX programs from V3.x (when it is released) as this works nicely with OS's like FreeRTOS and with systems like Arduino. From memory setting GFX_OS_CALL_UGFXMAIN to TRUE is the way to use option 2. In your main() just call gfxInit - it will never return. Define function uGFXMain() which contains the body of your application. No need to explicitly initialise FreeRTOS, uGFX will do it for you.
  1. Load more activity
×