Загрузка данных


#include <zephyr/debug/stack.h>

// ... внутри lcd_render_thread ...

void lcd_render_thread(void *p1, void *p2, void *p3)
{
    struct lcd_msg_t msg;
    uint8_t i = 0;

    /* Переменные для анализа стека */
    size_t unused, size;
    struct k_thread *current_thread;

    while (1) {
        if (k_msgq_get(&lcd_msgq, &msg, K_FOREVER) == 0) {
            
            // --- Блок анализа стека ---
            current_thread = k_current_get();
            stack_analyze("LCD_STACK", current_thread->stack_info.start, 
                          current_thread->stack_info.size);
            
            /* Или ручной расчет для вывода через printf/LOG */
            k_thread_stack_space_get(current_thread, &unused);
            size = current_thread->stack_info.size;
            printk("LCD Stack: Used %zu / Total %zu bytes (Unused: %zu)\n", 
                   size - unused, size, unused);
            // ---------------------------

            if(msg.mode != 2) {
                lcd_set_cursor(msg.col, msg.row);
                for(i=0; i < 16 - msg.col; i++)
                    lcd_data(' ');
            }
            if(msg.mode != 1) {
                lcd_set_cursor(msg.col, msg.row);
                lcd_print(msg.text);
            }
            k_msleep(1);
        }
    }
}