这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 有奖活动 » 基于stm32f401retc对0.96寸tft的lvgl移植

共1条 1/1 1 跳转至

基于stm32f401retc对0.96寸tft的lvgl移植

助工
2025-10-13 17:26:40     打赏

1 准备工作

下载lvgl源码:https://github.com/lvgl/lvgl,我把源码tag切到了8.3版本,他们说这个版本空间占用少。

使用cubemx 创建项目,开启spi、定时器、串口这些使用到的外设

引脚配置如下

1760343613154991.png

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

1760343693623793.png


2 lvgl代码裁剪

拿出三个文件夹:demos、example/porting、 src

两个文件:lv_conf_template.h,lvgl.h

------------------------------------------------------------------------------------------------------------------------------------------

example/porting文件夹下的文件修改下名字,删除掉template字段。

lv_conf_template.h改成lv_conf.h。

最后的复制到项目中的结构如下

1760344724521313.png


修改cmakelist

1760345816133750.png

然后编译过程中,lvgl源码需要需修改一些引用。

启动lv_port_disp.h文件编译

1760346930203422.png

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

1760346252608450.png

1760346277805740.png

开启例程benchmark

1760346755795211.png

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



共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]