# STM32F103RCT6_WouoUI **Repository Path**: git.kzyoschina.net/stm32-f103-rct6_-wouo-ui ## Basic Information - **Project Name**: STM32F103RCT6_WouoUI - **Description**: 此仓库源码原始版本来自B站用户:音游玩的人。他的项目虽然使用STM32F103C8T6,但似乎是使用Arduino IDE开发,本源码更改使用u8g2标准库,使之可以使用keil混合c/c++编译,不使用Arduino的Print函数实现功能。或许仍然存在未知bug,欢迎交流。 - **Primary Language**: C - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 13 - **Created**: 2023-12-14 - **Last Updated**: 2023-12-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # STM32F103RCT6_WouoUI #### 介绍 此仓库源码原始版本来自B站用户:音游玩的人。他的项目虽然使用STM32F103C8T6,但似乎是使用Arduino IDE开发,本源码更改使用u8g2标准库,使之可以使用keil混合c/c++编译,不使用Arduino的Print函数实现功能。或许仍然存在未知bug,欢迎交流。 #### 注意 可以在KEIL5中使用c/c++混合编译,UI框架部分使用c++实现,因为框架里使用了很多结构体内部初始化成员,在keil里c语法会报错,故选用c++,随便练习我稀烂的cpp语法。 #### 感谢 /*----------------原说明-----------------*/ /* 此项目模仿自稚晖君暂未开源的 MonoUI,用于实现类似 UltraLink 的丝滑界面 有四个版本: * 分辨率 128 * 128 :主菜单,列表和关于本机页基本还原了 UltraLink 的界面和动态效果,电压测量页为原创设计 * 分辨率 128 * 64 :主菜单模仿 UltraLink 重新设计,去掉了小标题,电压测量页重新设计,关于本机页面改为列表,列表适配了该分辨率 * 分辨率 128 * 32 :在 128 * 64 分辨率的基础上,主界面只保留图标,电压测量页重新设计 * 通用版本:仅保留列表,主菜单也改为列表,删除电压测量页和与列表无关的动画(保留弹窗效果),经过简单修改可以适配任何分辨率,任何行高度的情况 WouoUI v2.0 功能: * 全部使用非线性的平滑缓动动画,包括列表,弹窗,甚至进度条 * 优化平滑动画算法到只有两行,分类别定义平滑权重,并且每个权重值都分别可调 * 可以打断的非线性动画,当前动画未结束但下一次动画已经被触发时,动画可以自然过渡 * 非通用版本分别适配了类似 UltraLink 主菜单的磁贴界面(因为让我想起 WP7 的 Metron 风格,所以称之为磁贴) * 通用版本仅保留列表类界面,经过简单修改可以适配所有分辨率的屏幕,包括屏幕内行数不是整数的情况 * 列表菜单,列表可以无限延长 * 列表文字选择框,选择框可根据选择的字符串长度自动伸缩,进入菜单时从列表开头从长度 0 展开,转到上一级列表时,长度和纵坐标平滑移动到上一级选择的位置 * 列表单选框,储存数据时也储存该值在列表中所在的位置,展开列表时根据每行开头的字符判断是否绘制外框,再根据位置数据判断是否绘制里面的点 * 列表多选框,储存数据的数组跟多选框列表的行数对应,不要求连续排列,展开列表时根据每行开头的字符判断是否绘制外框,再根据行数对应的储存数据位置的数值是否为1判断是否绘制里面的点 * 列表显示数值,与多选框原理相似,但不涉及修改操作 * 列表展开动画,初始化列表时,可以选择列表从头开始展开,或者从上次选中的位置展开 * 图标展开动画,初始化磁贴类界面时,可以选择图标从头开始展开,或者从上次选中的位置展开 * 弹出窗口,实现了窗口弹出的动画效果,可以自定义最大值,最小值,步进值,需要修改的参数等,窗口独立运行,调用非常简单 * 弹出窗口背景虚化可选项,背景虚化会产生卡顿感,但删掉代码有些可惜,因此做成可选项,默认关闭 * 亮度调节,在弹出窗口中调节亮度值可以实时改变当前亮度值 * 旋钮功能,使用EC11旋钮控制,旋钮方向可以软件调整,内置一个USB控制电脑的示例,在睡眠模式下旋转调整音量或者亮度,短按输入一个键值,长按进入主菜单,旋钮消抖时长等参数可以在弹出窗口中调整 * 循环模式,选择项超过头尾时,选择项跳转到另一侧继续,列表和磁贴类可以分别选择 * 黑暗模式,其实本来就是黑暗模式,是增加了白天模式,默认开启黑暗模式 * 消失动画适配两种模式,一种是渐变成全黑,另一种渐变成全白 * 断电存储,用简单直观的方式将每种功能参数写入EEPROM,只在修改过参数,进入睡眠模式时写入,避免重复擦写,初始化时检查11个标志位,允许一位误码 项目参考: * B站:路徍要什么自行车:在线仿真:https://wokwi.com/projects/350306511434547796,https://www.bilibili.com/video/BV1HA411S7pv/ * Github:createskyblue:OpenT12:https://github.com/createskyblue/OpenT12 * Github:peng-zhihui:OpenHeat:https://github.com/peng-zhihui/OpenHeat 注意事项: * 示例使用的单片机为 STM32F103C8T6 ,旋钮为 EC11 ,旋钮旋转使用中断程序,旋钮质量不好可能使界面卡死,原因不明,如果能查明原因请联系我 * 为防止使用者在上传程序后无法直接使用,认为是代码有问题,HID功能默认禁用,如需使用旋钮音量控制和点按输入功能,请在初始化函数中启用相关功能,上传成功后设置两个跳线帽都为0,断电再插上 USB 线 本项目使用Apache 2.0开源协议,如需商用或借鉴,请在醒目处标注本项目开源地址 欢迎关注我的B站账号,用户名:音游玩的人,B站主页:https://space.bilibili.com/9182439?spm_id_from=..0.0 */ 感谢这几位大佬教程和付出。