基于STM32F103标准库的OLED多级菜单GUI实现

代码地址:

https://gitee.com/WYW3541/OLED-UIicon-default.png?t=N7T8https://gitee.com/WYW3541/OLED-UI

前言:本工程整体框架参考了一位大佬的例程 (http://t.csdnimg.cn/9XjT2),但原作者使用的STM32CubeMX(一款由ST公司自己设计的图形化编程软件)此软件自动生成的代码都是基于HAL库的,而且其是专为ST公司自己生产的芯片所设计的,和其他芯片(如国产)具有一定技术壁垒,所以一般本人使用较少......扯远了,回到正题,由于个人习惯,笔者就在原作者的基础上做了一个标准库的移植,以正点原子的OLED显示实验为工程框架,在正点原子的MINI板上将原工程以标准库实现。(本项目源码在本文末尾进行开源!

  硬件实物图:

效果图:

        温度计:

  游戏机:

引脚连接:

OLED模块:

VCC --> 3.3V

GND --> GND

SCL --> PA2

SDA --> PA1

DHT11模块:

DATA --> PA11

VCC --> 3.3V

GND --> GND

KEY模块(这部分笔者直接使用了正点原子MINI板上的):

KEY0 --> PA15

KEY1 --> PC5

KEY_UP --> PA0


一、多级菜单


        随着工业化和自动化的发展,如今基本上所有项目都离不开显示终端。而多级菜单更是终端显示项目中必不可少的组成因素,其实TFT-LCD屏幕上可以借鉴移植很多优秀的开源多级菜单(GUI,比如:LVGL),而0.96寸的OLED屏幕上通常需要自己去适配和编程多级菜单。网上的普遍采用的多级菜单的方案是基于索引或者结构树,其中,索引法居多索引法的优点:可阅读性好,拓展性也不错,查找的性能差不多是最优,就是有点占用内存空间

说明:本项目的多级菜单也是采用了索引法进行实现。

二、索引法多级菜单,内部功能,代码实现

建议直接去看原作者的讲解,非常Nice http://t.csdnimg.cn/9XjT2

三、演示视频

STM32F103OLED多级菜单演示


四、总结与代码开源

总结:

HAL库到标准库的移植,主要采用了原作者的工程中的菜单和OLED的驱动文件,如果有想自己尝试移植的朋友们,有什么问题的话可以私信我。

  • 23
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
引用\[1\]中提到了在使用STM32F103标准库进行多级菜单显示时遇到的问题。根据描述,问题出现在页面切换后功能没有执行。根据其他博主的代码,可以使用结构体和枚举来操作界面切换和函数功能的调用。作者通过不断调试和根据自己的想法实现了所需的功能。同时,作者也表示会学习其他大佬的代码风格。 引用\[2\]中提到了在创建STM32F103工程时,需要添加对应的分组。为了让工程结构清晰,可以让MDK的工程分组和工程文件夹对应起来。由于MDK分组不支持多级目录,可以将路径也带入分组命名中,以便区分。 引用\[3\]中提到了STM32F103系列的启动文件存放在STM32CubeF1软件包的特定文件夹下。对于STM32F103ZET6开发板,对应的启动文件为startup_stm32f103xe.s。为了节省空间,可以对启动文件进行修改,如将Heap_Size设置为0,去掉不需要调用的SystemInit函数等。 综上所述,如果你想在STM32F103标准库实现多级菜单功能,可以参考其他博主的代码,使用结构体和枚举来操作界面切换和函数功能的调用。同时,为了让工程结构清晰,可以将MDK的工程分组和工程文件夹对应起来。在创建工程时,需要添加对应的分组。此外,还可以根据需要对启动文件进行修改,以满足项目的需求。 #### 引用[.reference_title] - *1* [2021校赛基于stm32f103多功能台灯](https://blog.csdn.net/boybs/article/details/121339111)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [【正点原子STM32连载】 第六章 新建寄存器版本MDK工程 摘自【正点原子】STM32F103 战舰开发指南V1.2](https://blog.csdn.net/weixin_55796564/article/details/130576791)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玄奕子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值