作为一个纯新手lvgl在学习两天半之后想着尝试下移植到单片机上试试
开发板 gd32 f407
屏幕 使用iic通信协议的单色屏
开发工具 Keil uVision5 lvgl 版本8.3
参考移植文档8.3移植
遇到的问题移植到单片机后每次调用lv_task_handler时卡死
---------------------------------------------------------------------------------------------------------------------------------
开始移植,按照文档内容糊里糊涂的移植到单片机上后编译运行并没有报错,但在调用lv_ex_label(这是一个创建一个页面的方法)后lv_task_handler方法就会卡在while中
// lvgl 初始化
lv_init();
lv_port_disp_init();
lv_ex_label(); //自己的页面 没有请自己写一个
// lv_tick_inc(1);//lvgl心跳 丢到定时器中执行
while (1) {
printf("1");
lv_task_handler(); //中断去执行 lvgl的事件
delay_1ms(5); //延迟十秒 一秒0到100
printf("2");
}
在使用最简单最好用打印调试大法后发现打印完1之后就不在打印。这情况也是一脸懵跟进去看也只能看懂一点点,对于这种情况访问大量资料依旧毫无头绪,只能看视频耐心继续学习去。。。。
在lvgl里是有打印的,也是有报错的但需要在配置文件中打开
#define LV_USE_LOG 1
打开打印后报错remove_free_block: Asserted at expression: prev && "prev_free field can not be null" (in lv_tlsf.c line #589) 前往lv_tlsf.c 看一看 依旧看不懂,上网查一下发现F407的内存分两块
在软件上勾选iram2之后解决报错,后面即使在取消勾选依然正常,这。。。。。有点迷糊。