新手小白lvgl-学习路线


先介绍一下本人情况普本的软件工程专业,一战考研失利,去大厂干测试感觉枯燥且转正无望,于是打算学习嵌入式软件开发,非佬纯属分享学习心得,如有不妥,请尽管批评,感谢大家的意见。
现在进入的是嵌入式的lvgl篇章,可以把它理解为界面的展示,类似于纯软的前端。

一:环境搭建

二:小项目以及各组件介绍

一:环境搭建

具体可以分为x86和arm版本,因为我们实训中主要用的是开发板6818,所以需要用到交叉编译工具arm-linux-gcc,否则如果将生成的文件拷贝到开发板中,用命令file 文件(你的生成文件名字)查看架构,如果不是arm版本的话就跑不了。总结:所需的工具有虚拟机,vscode,cmake,sdl库等等

现在我就来介绍一下两个环境的配置过程。

1.1:x86环境的配置

第一步,需要下载安装包lvgl的版本和对应的驱动,这里我用的是lvgl-8.3.11的版本,链接我放到下面,有需要的小伙伴可以自行下载

lvgl版本:https://github.com/lvgl/lvgl/tree/release/v8.3

lvgl驱动:https://github.com/lvgl/lv_drivers/tree/release/v8.3

第二步:解析,并正确形成lv_conf.h和lv_drv_conf.h文件,具体步骤如下

1.把Ivgl目录下的lv conf template.h拷贝一份为lv_conf.h,用大白话讲就是复制下面的lv_conf_template然后粘贴,然后重命名名字为lv_conf.h就ok
在这里插入图片描述

2.把Iv drivers目录下的lv drv conf template.h拷贝一份为lv drv conf.h,用大白话讲就是复制粘贴再重命名,这里可以参照上面的步骤
在这里插入图片描述

第三步:配置相关驱动设置,将所需要的功能设置为1

第四步:在文件生成main.c文件和CMakeLists.txt文件,新建文件,改名为这两个就好咯,所以文件最后包括的内容如下所示。
在这里插入图片描述

1。2:arm版本的操作

首先得知道为什么要移植到arm版本?因为我们的开发板只能支持arm架构,所以如果架构不对的话,就会显示失败。具体步骤如下

也没得如下了,其实就是和上面的步骤一样 照着做,只是相关的配置驱动设置不同而已,这里我会分细节去讲解。

二:小项目以及各组件介绍

项目要求:建立一个可以跳转的新旧窗口

思路1:先封装一个窗口函数,新建窗口,窗口里面有一个按钮,按钮里面有标签显示,最后给按钮添加事件。
思路2:再封装一个新窗口函数,跟上面一样的步骤。

用大白话介绍所用到的各组件和样式设计

1.封装窗口函数设计

//创建窗口
lv_obj_t *窗口函数名 =lv_obj_create(父类);
窗口函数名自己取,父类即在上面界面下创建窗口,一般是屏幕。
//设置窗口大小
lv_obj_set_size(窗口名,宽度,高度)//设置窗口位置,让它居中
lv_obj_center(窗口名)//设置背景颜色
lv_obj_set_style_bg_color(窗口名,颜色参数,0)//在窗口设计按钮和标签
lv_obj_t *按钮名=lv_btn_create(窗口名);//这里是btn创建
//设置标签
lv_obj_t *标签名l=lv_label_create(按钮名);//这里是label创建
//在标签添加文本,便于观看
lv_label_set_text(标签名, "文本");

//最后给按钮设置事件
 lv_obj_add_event_cb(按钮函数名, 回调函数, 事件类型, NULL);

//回调函数的设计
// 登录界面按钮回调
static void login_btn_event_cb(lv_event_t *e)
{
    if (lv_event_get_code(e) == LV_EVENT_CLICKED) {
        // 不删除屏幕,而是删除登录窗口
        lv_obj_t *button = lv_event_get_target(e);
        lv_obj_t *mainproject = lv_obj_get_parent(button);
        lv_obj_del(mainproject);
        new_show();
    }
}

以下是参考代码
在这里插入图片描述
在这里插入图片描述
新窗口的函数设计大家可以根据上面的实例代码模仿操作。
这个是运行效果图,点击login按钮和back按钮,可以实现两个窗口的切换

在这里插入图片描述

在这里插入图片描述
最后附上lvgl 8.3.11版本的手册以及源码,方便大家了解与批评。
源码链接:https://download.csdn.net/download/weixin_69436998/90983371

<think>好的,用户想了解如何使用STM32搭建人机交互界面的技术路线及学习路径。首先,我需要分析用户的需求。用户可能是一个刚接触STM32的新手,想要从零开始学习如何开发人机交互界面(HMI)。因此,回答需要结构清晰,分步骤引导,并提供学习资源。 首先,我应该确定用户需要的基础知识。STM32开发的基础包括GPIO、定时器、中断、通信协议(如SPI、I2C、UART)等。然后,可能需要涉及外设驱动,比如显示屏和按键的驱动。接着是界面框架设计,比如菜单系统的实现,最后是高级功能和应用案例。 接下来,参考用户提供的引用内容。引用[2]提到了使用STM32F103ZET6、OLED显示屏和4x4矩阵按键实现二级菜单的项目,这可以作为具体案例。引用[3]和[4]也涉及STM32的串口通信和嵌入式发展,可以补充相关知识点。 需要确保回答符合系统级指令,比如使用正确的中文回答,数学公式用$...$,独立公式用$$...$$,但用户的问题可能不涉及数学公式,所以可能不需要。然后生成相关问题,并正确引用资料。 可能的学习路径分为几个阶段:基础准备、外设驱动开发、界面框架设计、综合实践、进阶优化。每个阶段需要详细说明学习内容和推荐资源,比如引用[2]的项目作为实践案例,引用[1]的教程作为学习基础。 还需要考虑用户可能缺乏的基础知识,比如如何开始STM32开发,因此推荐具体的学习板和教程,如潘多拉开发板、野火和正点原子的教程,这些都是用户引用中提到的资源。 最后,确保回答结构清晰,分步骤,引用正确,比如在推荐项目时添加引用标识[^2],在提到RTOS时引用[^1]。同时,生成的相关问题要围绕用户可能进一步想了解的内容,比如硬件选型、菜单实现方法、RTOS的作用等。</think>### STM32人机交互界面开发流程及学习路径 #### 一、技术路线总览 1. **基础准备**:掌握STM32开发基础(GPIO/定时器/中断) 2. **外设驱动开发**:LCD/OLED/触摸屏/按键驱动 3. **界面框架设计**:菜单系统/状态机/图形库 4. **综合实践**:完整HMI项目开发 5. **进阶优化**:RTOS整合/性能优化 #### 二、分阶段学习路径 ##### 阶段1:STM32开发基础 1. 开发环境搭建 - 安装Keil MDK/STM32CubeIDE - 学习使用STM32CubeMX配置工具 - 推荐硬件:正点原子/野火开发板[^1] 2. 核心外设掌握 ```c // GPIO控制示例(LED闪烁) HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5); HAL_Delay(500); ``` - 重点学习:GPIO、USART、SPI、I2C、定时器、中断 3. 通信协议实践 - 实现OLED显示(SPI接口) - 矩阵按键扫描(GPIO扩展) ##### 阶段2:人机交互外设驱动 1. 显示设备驱动 - 字符型LCD(1602/12864) - 图形点阵屏(SSD1306/ST7789) - TFT彩屏(RA8875/ILI9341) 2. 输入设备开发 ```c // 4x4矩阵按键扫描示例 uint8_t Key_Scan(void) { for(uint8_t row=0; row<4; row++){ HAL_GPIO_WritePin(ROW_PORT, ROW_PINS[row], GPIO_PIN_RESET); for(uint8_t col=0; col<4; col++){ if(!HAL_GPIO_ReadPin(COL_PORT, COL_PINS[col])){ return row*4 + col + 1; } } HAL_GPIO_WritePin(ROW_PORT, ROW_PINS[row], GPIO_PIN_SET); } return 0; } ``` ##### 阶段3:界面框架设计 1. 菜单系统实现 - 二维菜单结构设计 - 状态机管理界面切换 - 推荐参考开源菜单框架[^2] 2. 图形化方案选择 - 轻量级GUI:u8g2/TinyGUI - 全功能GUI:STemWin/LVGL - 触控交互实现 ##### 阶段4:综合项目实践 推荐项目:二级菜单系统开发 1. OLED显示驱动 2. 矩阵按键事件处理 3. 菜单数据结构和导航逻辑 4. 功能回调机制实现 ##### 阶段5:进阶优化 1. 引入RTOS(如RT-Thread[^1]) 2. 多任务界面更新 3. 动画效果优化 4. 低功耗设计 #### 三、学习资源推荐 1. **硬件平台**: - 新手推荐:野火/正点原子开发板[^1] - 中级项目:潘多拉STM32L475(支持RTOS) 2. **教程体系**: - STM32CubeMX基础教程 - HAL库开发指南 - RT-Thread内核教程 3. **实战项目**: - 开源菜单项目 - 串口指令控制系统[^3] #### 四、典型开发流程 ```mermaid graph TD A[需求分析] --> B[硬件选型] B --> C[外设驱动开发] C --> D[界面框架设计] D --> E[功能模块集成] E --> F[系统联调测试] F --> G[性能优化] ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值