lvgl的区别 qt_LVGL分析-画面刷新

LVGL分析

1 littlevgl线程

littlevgl有几个线程,作用是什么?

三个,主线程一个,和在主线程的hal_init函数中创建的另两个sdl线程。

主线程完成一系列初始化工作后,循环每10ms调用在lv_init函数中注册的三个任务,indev_proc_task,lv_refr_task,anim_task,重点关注的是每50ms处理一次的输入处理indev_proc_task和每30ms处理一次的画面刷新lv_refr_task。

monitor_sdl_refr_thread线程负责输出图像和鼠标键盘的输入处理,每次处理后sleep 50ms。

tick_thread线程每5ms增加计时变量一次,用来为全局提供时间。

2 输入检测

输入检测到图像输出的过程(以单个按钮被鼠标按下为例)

monitor_sdl_refr_thread线程中

鼠标按下,记录鼠标位置数据

主线程中

​ 在indev_proc_task中读取鼠标位置数据,和控件位置比较,得到控件指针,调用控件signal_func函数,此函数再调用lv_btn_set_state(btn, LV_BTN_STATE_PR)设置按钮状态为按下状态,此时画面并没有实际更新,可以看成是发出了画面更新请求。

​ 在lv_refr_task中处理收到的画面更新请求,实际上是修改了画面变量tft_fb

monitor_sdl_refr_thread线程中

​ 根据变量tft_fb的值更新画面

3 画面刷新

lv_refr_task(30ms调用一次)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
牛顿迭代法是一种用于求解方程的数值方法,它通过不断逼近函数的根来得到方程的解。在使用牛顿迭代法时,如果初始点选择不当或者函数的性质不符合要求,可能会导致迭代过程发散或者收敛速度很慢,这就是所谓的"跑偏"。 在牛顿迭代法中,迭代公式为:x_{n+1} = x_n - f(x_n)/f'(x_n),其中x_n表示第n次迭代得到的近似解,f(x_n)表示函数在x_n处的值,f'(x_n)表示函数在x_n处的导数。 当初始点选择不当时,可能会导致迭代过程发散。例如,如果初始点选择在函数的极值点或者奇点附近,迭代过程可能会发散,无法得到方程的解。 另外,如果函数的性质不符合要求,也可能导致迭代过程收敛速度很慢。例如,如果函数在某些区间内变化很快,而在另一些区间内变化很慢,那么迭代过程可能会在变化快的区间内收敛很快,在变化慢的区间内收敛很慢,导致整体收敛速度变慢。 为了解决牛顿迭代法中的跑偏问题,可以采取以下方法: 1. 合理选择初始点:根据函数的性质和方程的解的位置,选择一个合适的初始点,使得迭代过程更容易收敛。 2. 改进迭代公式:对于某些特殊的函数,可以通过改进迭代公式来提高收敛速度。例如,可以使用牛顿-拉夫逊迭代法或者割线法等方法。 3. 调整迭代参数:对于某些特殊的函数,可以通过调整迭代参数来改善收敛性能。例如,可以调整迭代步长或者迭代次数等参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值