#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);
}
}
}