1 准备工作
下载lvgl源码:https://github.com/lvgl/lvgl,我把源码tag切到了8.3版本,他们说这个版本空间占用少。
使用cubemx 创建项目,开启spi、定时器、串口这些使用到的外设
引脚配置如下

定时器,单位计算到1ms就可

2 lvgl代码裁剪
拿出三个文件夹:demos、example/porting、 src
两个文件:lv_conf_template.h,lvgl.h
------------------------------------------------------------------------------------------------------------------------------------------
example/porting文件夹下的文件修改下名字,删除掉template字段。
lv_conf_template.h改成lv_conf.h。
最后的复制到项目中的结构如下

修改cmakelist

然后编译过程中,lvgl源码需要需修改一些引用。
启动lv_port_disp.h文件编译

开启lv_port_disp.c文件的编译,修改花点函数。


开启例程benchmark

main初始化流程
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USART1_UART_Init();
MX_SPI3_Init();
MX_TIM9_Init();
/* USER CODE BEGIN 2 */
HAL_TIM_Base_Start_IT(&htim9);
Log_info_G("stm32f401rc t6 ,code for gdb");
TFT_Init();
TFT_Clear(0x0000); //初始清屏
//TFT_ShowString(20,30,WHITE,BLACK,"Hello World!");
//TFT_ShowImage(0,0,160,80,gImage_111);
lv_init();
lv_port_disp_init();
//lv_style_bg(1);
lv_demo_benchmark();
/* USER CODE END 2 */main 函数主循环中,增加lvgl的心跳
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
//if(!(cout%20)) lv_style_bg(cout);
HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);
HAL_GPIO_TogglePin(LED1_GPIO_Port, LED2_Pin);
HAL_Delay(1);
cout++;
lv_task_handler();
//Log_info_G("go on [%x]!!",lv_color_make(0,0xff,0).full);
}
/* USER CODE END 3 */
}调用demo接口,benchmark例程
lv_demo_benchmark();
3 测试效果
4 代码
https://gitee.com/zhang-sy/stm32f401-rc
原理图见附件: stm32f401-096.pdf
30

