摘要
- 基于野火霸道-V2+3.2寸屏的开发板,下载器为STLINK
- 分为两个版本,FreeRTOS和裸机版本
裸机
裸机准备
- lvgl v8.2版本的源码
- 野火的《触摸画板-3.2寸》与《基本定时器》的代码例程
移植
- 将基本定时器代码移植到触摸画板-3.2寸的例程中,实现LED的正常反转
- 将lvgl的源码移植到工程里,此处可以参考正点原子的视频
- 修改lv_port_disp_template文件
- 实现disp_init函数并将缓冲区方法设置为1或者2,要注意ILI9341_Init函数里扫描方向要设置为3
- 实现disp_flush函数,ILI9341_DrawPixel函数需要自己加上,并添加到头文件里
- 实现disp_init函数并将缓冲区方法设置为1或者2,要注意ILI9341_Init函数里扫描方向要设置为3
- 修改lv_port_indev_template文件
-
注释掉不用的函数,保留触摸相关函数 -
-
实现touchpad_init,touchpad_is_pressed,touchpad_get_xy函数
-
XPT2046_TouchDetect是内部函数,注意将其在头文件声明
-
- 在定时器中断回调函数中,调用lv_tick_inc(1),给LVGL提供时钟源
- 主函数如图所示
- Hello world的代码效果是蓝底上显示Hello world,Button的代码效果是有个按键触摸能够滑动
注意
- 头文件LV_CONF中的LV_MEM_SIZE 这个宏定义请注意大小,我设的25kb,太大可能导致报错No space
- lv_port_disp_template中的缓冲区, static lv_color_t buf_1[MY_DISP_HOR_RES * 20],20这个数也别太大,大了显示的更快,但也可能报错No space
RTOS
RTOS准备
- FreeRTOS的触摸画板例程
移植
- RTOS不再赘述,只需要注意别忘记在SysTick_Handler中调用xPortSysTickHandler
- 完成后,创建任务测试任务调度运行情况,画板是否可以画画,LED灯是否翻转
lvgl移植
- 继续移植LVGL源码,与裸机相同
- 实现disp和indev文件,与裸机相同
- 自定义tick源,LV_TICK_CUSTOM设置为1,不需要定时器中断
- main文件内容
注意
- FreertosConfig头文件中,也需要申请数组空间,configTOTAL_HEAP_SIZE,我在此设置的15kb
- lv_port_disp_template中的缓冲区lv_color_t buf_1,我设置了10行
- LV_MEM_SIZE宏定义设置为20kb,这几个参数不合适很容易报错No space
- 如果使用的是正点的lv_conf头文件,LV_MEM_ADR记得设置为0
- LVGL模板资源