FreeRTOS LVGL页面切换为LCD纯手动绘制遇到的问题

有时候我们需要将FreeRTOS和LVGL页面切换为LCD纯手动绘制,提供更高的灵活性和可定制性。

  1. 自定义界面设计:使用LCD纯手动绘制界面,可以完全自定义界面的外观和行为。可以根据特定的需求和设计概念创建独特的用户界面,而不受LVGL框架的限制。

  2. 资源优化:LVGL是一个功能强大的图形库,它提供了丰富的控件和功能,但同时也需要占用一定的系统资源。通过使用LCD纯手动绘制,可以根据具体应用的需求,灵活地控制和优化系统资源的使用,提高系统的效率和性能。

  3. 快速原型设计:对于某些项目,可能需要快速原型设计或临时界面,而不需要过多的界面交互和复杂的控件。使用LCD纯手动绘制可以快速实现简单的界面,加快开发进度。

  4. 跨平台兼容性:使用LCD纯手动绘制界面可以实现在不同平台和设备上的交叉兼容性。由于LVGL是基于C语言编写的,通过手动绘制界面可以将应用程序移植到其他平台上,而无需太多的修改和调整。

        在一开始我们尝试了将LVGL界面的更新任务删除,删除的同时创建一个LCD手动绘制任务,然后试图从LCD切换至LVGL界面的时候,删除LCD手动绘制任务,重新创建LVGL任务。很幸运,LCD任务正常地跑起来了,能够正确地显示和更新,但是尝试返回却失败了。

        后来尝试了创建一个LVGL的screen,就是什么内容都没有的,按按键就返回。测试结果表明,在无LCD任务创建的情况下可以正常返回,但是当加入手动绘制的LCD任务创建删除之后,返回可能是卡死在LCD初始化清屏,可能是在操作lcd任务一两步之后就卡死。由于LVGL较大,下载烧录要花上三四分钟,在经过多次调试之后,我观察发现多数情况下,OLED任务并没有卡死,虽然此时LVGL已经是异常了。说明问题应该是出现在LVGL的语法逻辑这些内容上,应该是不属于硬件卡死。结合LCD触摸无反应,我觉得可能是LVGL抢占了。

        我又尝试了不删除LVGL,也不创建LVGL screen的方式,也就是尝试挂起LVGL任务。

        具体流程为:用户进入需要LCD手动绘制的界面,暂停LVGL定时器,挂起LVGL任务,创建LCD手动绘制任务,结束时删除LCD手动绘制任务,恢复LVGL任

  • 40
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值