094、LVGL微调框数值与步进
LVGL微调框数值与步进:从一次诡异的数值跳变说起去年做一款工业温控面板,用LVGL的lv_spinbox做温度设定。调试时发现一个诡异现象:用户点击步进按钮,数值偶尔会直接跳变两个步长,就像按键被“双击”了一样。用逻辑分析仪抓按键波形,硬件消抖正常,问题出在LVGL的数值更新机制上。微调框的核心:数值与步进的博弈LVGL的微调框本质是lv_textarea的变体,但增加了数值范围约束和步进逻辑。它的数值存储在一个int32_t变量里,步进值通过lv_spinbox_set_step()设定。这里有个容易忽略的细节:步进值默认是1,但如果你设成0.5这样的浮点数,LVGL内部会做整数化处理——它把数值乘以1000后存储,显示时再除以1000。这个“隐式放大”机制,是很多数值异常的根源。// 别这样写:直接设浮点步进lv_spinbox_set_step(spinbox,0.5)