基于STM32 的 Astra UI 的学习与探索

项目地址:https://github.com/AstraThreshold/oled-ui-astra.git 

项目  README 文件

## powered by astra UI.

# [Releases](https://github.com/dcfsswindy/oled-ui-astra/releases)

# [Wiki](https://github.com/dcfsswindy/oled-ui-astra/wiki)

# [Video](https://www.bilibili.com/video/BV16x421S7qc)

国内访问 github 速度比较慢,建议访问加速镜像网址(将http://github.com 换成 https://dgithub.xyz):https://dgithub.xyz/AstraThreshold/oled-ui-astra/wiki/ 学习其使用文档,

或者访问地址:https://gitcode.com/gh_mirrors/ol/oled-ui-astra 进行克隆

 

首先,想象自己是一个采访 "Astra UI"这个明星的记者,思考准备问它几个问题吧:

疑问1:其适配的硬件条件是什么?

疑问2:Astra UI是否简单易用?如何写一个最简单的二级页面?

疑问3:如何设置页面中元素的动作(相当于QT中的 SIGNAL 和 SLOT)

疑问4:Astra UI 是基于 C++的吗?光用C语言可以运行吗?

疑问5:Astra UI有哪些有趣的特效和功能?能够解决哪些方面的难题?

疑问6:Astra UI支持哪些屏幕,是否适配其他平台?移植是否容易?

疑问7:Astra UI 相较于其他GUI库,比如U8g2,比如Lvgl,比如TFT_LCD等等,有哪些优势或者特点?

 

带着这些问题,进行我们的探索之旅吧:

疑问1:其适配的硬件条件是什么?

处理器/开发板

astra UI 可以支持目前主流的硬件平台,包括 STM32 、Arduino 、ESP32 等。 若您的硬件平台默认情况下不支持 C++ 编程(如 STM32 ),可在网络上搜索对应的支持方式。只要硬件平台可以支持 C++ 编程,astra UI 都可以成功部署并运行。 但仍有一些推荐的硬件平台配置,若您的硬件平台满足以下配置,可能会获得比较优秀的使用体验:

  • 主频率大于等于 40 MHz
  • 显示数据传输总线速率(如 SPI )大于 1 Mbps 
    • 在 astra UI v0.0.2-alpha 中,数据传输速率会影响各种动画的速度
    • 后续的版本更新会解决这一问题(详见“更新计划”)
    • 下个版本后,普通的软件模拟低速 I2C 协议即可得到正常的使用体验
    • 若您的传输速率达不到此要求,动画速度会变慢,但不会影响使用
  • FLASH 大于等于 128 KB (著名的STM32F103C8T6 不满足要求,因为它是 64KB 的) 
    • 后续的版本更新会优化、裁剪程序结构
    • 经测试,在 astra UI v0.0.2-alpha 中:
      • 不添加任何菜单,单纯部署 astra UI 到硬件平台,约占用 80 KB
      • 添加两级菜单,其中包括一页图标页和一页列表页,约占用 90 KB
      • 添加两级具有七个元素的菜单,包括一页图标和一页列表,约占用 100 KB
  • 至少一个 ADC 端口(可选的,用于生成真随机数,您也可以用其他方式生成)
    • 每次开机动画背景星星生成的位置使用了真随机数
    • 以下情况需要您特别配置 HAL,详见“移植(部署)教程”
      • 若您想更改随机数生成方式
      • 若您不想星星的位置随机生成
      • 若您使用的硬件平台没有 ADC 端口
      • 若您不想使用 ADC
    • 若您不想在开机时显示 astra UI 开机动画,请与作者取得联系获得 Pro 版
  • 两个按键,分别用于 选择上一项/返回上一级 和 选择下一项/确认
    • 当然您也可以在 派生HAL 中自定义按键处理的方式
    • 关于 HAL ,在下文中会有提及

在 astra UI 测试阶段,笔者使用的硬件平台是 STM32F103CBT6 。 其具有 128 KB 的 FLASH;72 MHz 的主频率。 如果您的硬件平台与笔者相同,可以直接刷入仓库中的源码,无需另外移植。 笔者的具体接线方式,可参考下文“例程”内容。

附:STM32芯片型号规则——第二位数字代表 FLASH 容量:

‌STM32的命名规则主要包括以下几个部分‌:‌

‌1 家族名称‌:STM32表示这是一个基于ARM Cortex-M内核的32位微控制器(MCU)。
‌2 芯片类型‌:例如“F”表示通用型芯片,“L”表示低功耗型,“H”表示高性能型。
‌3 子系列‌:例如“103”表示基础型子系列,“407”表示增强型子系列。
‌4 引脚数目‌:例如“Z”表示144个引脚,其他常见的有“C”表示48引脚,“R”表示64引脚,“V”表示100引脚,“I”表示176引脚,“B”表示208引脚,“N”表示216引脚。
‌5 内部Flash容量‌:例如“E”表示512KB,其他常见的有“4”表示16KB,“6”表示32KB,“8”表示64KB,“B”表示128KB,“C”表示256KB,“F”表示768KB,“G”表示1024KB。
‌6 封装类型‌:例如“T”表示LQFP封装,其他常见的有“H”表示BGA封装,“U”表示VFQFPN封装。
‌7 温度范围‌:例如“6”表示工作温度范围为-40°C到85°C,其他常见的有“7”表示工作温度范围为-40°C到105°C。

实际应用中的例子
以STM32F103C8T6为例:

‌1 STM32‌:表示这是一个基于ARM Cortex-M内核的32位微控制器。
‌2 F103‌:表示这是一个基础型子系列的增强型芯片。
‌3 C8‌:表示该芯片有48个引脚,内部Flash容量为64KB。
‌4 T6‌:表示该芯片的封装类型为LQFP,工作温度范围为-40°C到85°C。

疑问6:Astra UI支持哪些屏幕,是否适配其他平台?移植是否容易?

从理论上讲,astra UI 不限制使用屏幕的分辨率、颜色和刷新率等。 但是,推荐的屏幕条件如下:

  • 硬件刷新率大于 50 帧每秒(SSD1306 的硬件刷新率是 106 帧每秒)
  • 屏幕高度(纵向)大于等于 32 像素
  • 屏幕宽度(横向)大于等于 64 像素

 

posted @   FBshark  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示