您尚未登录。

楼主 # 2022-01-22 20:36:17

dick2945
会员
注册时间: 2020-04-27
已发帖子: 4
积分: 1

请教:NUC972的USB MSC能和LVGL一起工作吗?

参考NUC970_NonOS_BSP的LCD_MPU例程移植了LVGL,但没有使用LCM双缓存功能,而是使用LCM单缓存,需要更新显示时才刷新屏幕。工作没问题。
    参考NUC970_NonOS_BSP的USBH_MassStorage和SD_FATFS例程,实现了USB MSC,能当读卡器用。
    将LVGL,MSC组合在一起,单单做读卡器或单单使用屏幕都能正常工作。在电脑读写TF卡时,点击屏幕,屏幕应该会更新的,但这时程序极易发生程序死机,电脑没显示U盘有断开连接,用sysprintf打印调试信息,发现USB中断程序里的USBD_GINTSTS_EPBIF_Msk有周期响应,但程序就是不正常运行。通过多个地方添加sysprintf打印调试信息,初步判断应该是在lv_task_handler(这函数是1ms执行一次的)里进入死循环。用Jlink连接调试时,发现电脑不能识别MSC,无法检测哪里出问题。
    该怎么让LVGL和USB MSC一起正常工作?
------------------------------------------------
已解决。
    通过取消MSC的功能,1s执行1次500ms的while循环堵塞,发现问题所在:
    disp_flush执行到执行lv_disp_flush_ready的过程中是不能执行lv_task_handler的,不然若在这过程中LVGL要更新显示,就会进入lv_refr.c 里的某个while(vdb->flushing){。。。}里不退出。

最近编辑记录 dick2945 (2022-01-23 11:03:53)

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn