Hi
Kind of tricky question.
Regarding RAM/FLASH, would say overall the STM32F103C8T6 is quite limited / short in FLASH and RAM, even the STM32F4 could not be quite suitable due to low RAM depending on the GUI requirements.
Assuming the Display is 160*128 and we are using partial rendering with 1/10 of buffer, just for this we need 4.26KB just for the frame buffer.
According to the docs Requirements | LVGL Open there are some minimum requirements for RAM, and FLASH (although i have some doubts on the mentioned minimum 64KB for flash), in that regard the STM32F103C8 is quite limited, probably not impossible to use, but probably a challenge regarding FLASH/RAM, especially FLASH since for example just the default font lv_font_montserrat_14 requires around 13KB.
In terms of RAM, the LV_MEM_SIZE must be defined according to the usage we are going to have on the GUI, for low RAM micro this value needs to be carefullt choosen, assuming we are creating / deleting the widgets/objects in a way that only the active screen exists in memory we would need to check the worst case condition, just an ideia for “how” much RAM is required for a certain widget type:
- Label: 284 bytes
- Arc: 596 bytes
- Slider: 1092 bytes
- Scale (horizontal): 1396
- Scale (Round): 1720
For each widget, and this was just a “small” test just by creating the object lv_obj_t* slider1 = lv_slider_create(lv_scr_act()) and checking LVGL memory usage, so no extra data, styles, events, etc…
Regarding FLASH, this is the one that it’s more easy to have some wasted space, since some of the stuff depend on what is defined in lv_conf.h, check for example the settings LV_DRAW_SW_SUPPORT_xxx to disable the ones that may not be “required” since in this case the compiler option -Xlinker --gc-sections, -ffunction-sections and -fdata-sections will not work alone to save some FLASH Space, same thing with the fonts LV_FONT_MONTSERRAT_xx, in case of custom fonts with large pixel size, create the font with just the necessary characters/symbols to save some space.
Personally would use something with minimum of 96KB of RAM (for very simple GUIs), 128KB to be more comfortable and 512KB of FLASH (Min 256KB), we also need RAM and FLASH to run the rest of the “code”…