免费自建网站工具深圳3区最新通告
摘要
- 基于野火霸道-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模板资源

 
