Lv_obj_refresh_style, program hangs, freezes sometimes


Since I have implemented the following code, it can happen, but relatively rarely, that my program hangs, in this code.

I suspect it has to do with this “refresh”.
I am a little perplexed? How, where could be the error most likely hidden? Is my code used correctly like this?

Thank you

if( ((millis() - lastMillis7) >= 250) && (state <= 11) ){
lv_style_set_text_color(&style_screen_label_5_main_main_default, lv_color_make(0xff, 0xff, 0xff));
lastMillis7 = millis();

if(state & 1){
lv_style_set_bg_opa(&style_screen_chart_1_main_main_default, 255);
lv_style_set_bg_opa(&style_screen_chart_1_main_main_default, 0);

lv_obj_refresh_style(guider_ui.screen_chart_1, &style_screen_chart_1_main_main_default, LV_PART_MAIN|LV_STATE_DEFAULT);


could following warning be the problem? But how can I avoid this warning?

with the debugger it is not very clear what happens… I do not get any error, but it looks that it hangs/freezes at following code-row (lv_memcpy):


The debugger only stops at breakpoints in the “Systick_Handler” function, but not in the main loop…

It looks like you are not calling lv_obj_refresh_style with the right parameter types. Please refer to the documentation.

I think in your case you want lv_obj_refresh_style(guider_ui.screen_chart_1, LV_PART_MAIN, LV_STYLE_PROP_ANY).

I set the following code before the SDRAM initialization and until now I didn’t have this problem again.

    MPU_Region_InitTypeDef MPU_InitStruct;

    // Disable the MPU

    // Configure the MPU attributes for SDRAM
    MPU_InitStruct.Enable = MPU_REGION_ENABLE;
    MPU_InitStruct.BaseAddress = 0xC0000000;
    MPU_InitStruct.Size = MPU_REGION_SIZE_4MB;
    MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
    MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;
    MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE;
    MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE;
    MPU_InitStruct.Number = MPU_REGION_NUMBER0;
    MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL1;
    MPU_InitStruct.SubRegionDisable = 0x00;


    // Enable the MPU