你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【GUI板卡测评】1.H750开箱及简单模拟时钟

[复制链接]
电子烂人 发布时间:2025-3-1 14:26
0.前言
年前申请了H750开发板,这个板子和H745是一样的外设,只有芯片不同。先写一篇开箱,尝试做个简单的菜单DEMO。
1.开箱
正常包装如图,和最新的纸盒包装不同,是那种有点年头的塑封包装,应该是库存货,不过这并不影响做产品DEMO和示例
image.jpg " [  z  k1 U+ ?" a
除板子以外还有一块FANOUT board,用来接外扩展模块和传感器,不过这次用不到这个小板子。
2. 应用
先试一下RTC和时钟
RTC配置如下:
image.png % J! P$ K! F1 _5 C
TOUCHGFXMODEL中调用RTC组件;同时配置对应的.H文件
extern RTC_HandleTypeDef hrtc;
extern RTC_TimeTypeDef RTC_Time;
extern RTC_DateTypeDef RTC_Date;
Model::Model() : modelListener(0)
{
}
void Model::tick()
{
HAL_RTC_GetTime(&hrtc, &RTC_Time, FORMAT_BIN);
HAL_RTC_GetDate(&hrtc, &RTC_Date, FORMAT_BIN);
modelListener->updateTime(RTC_Time.Hours, RTC_Time.Minutes, RTC_Time.Seconds);
}
在页面中添加一个模拟时钟组件,因为是竖屏,所以这里我选的是最大号的,
image (1).png ( \  V$ c6 w8 S+ `7 @; M- L/ q0 R. k; R
经常看各种指针有点乏味了?不妨吧指针图片修改一下,改成两个半圆组合的圆形:
image (2).png
* W/ {+ E  F3 K/ ?) X! Y
插入后如图
image (3).png 3 Q; V1 t. c9 g. i. K; v4 Z
调用代码,使得该页面时每段时间都读取RTC中的数值
void AnalogScreenPresenter::updateTime(uint8_t hour, uint8_t minute, uint8_t second)
{
view.updateTime(hour, minute, second);
}
不过,这种每次都要运行到对应函数,才能调用RTC读取代码,实际应用会感觉有些卡顿,指针的速度忽快忽慢:

6 L9 m1 t) b- n  f
这里参考官方WIKI的办法,添加一组计时器TickCounter,指针部分使用Counter并使能,抛弃部分准确度来获得更流畅的动画效果
image (5).png 8 f$ D7 n2 T& S
代码如下:
void AnalogScreenPresenter::handleTickEvent()
{
    tickCounter++;
    if (tickCounter % 60 == 0)
    {
        if (++second >= 60)
        {
            analogSeconds = 0;
            if (++minute >= 60)
            {
                analogMinutes = 0;
                if (++hour >= 24)
                {
                    hour = 0;
                }
            }
        }
  view.updateTime(hour, minute, second);
    }
最后效果如图:
image (4).png 3 `+ ?) u7 }0 g6 I( C9 G4 H
收藏 评论0 发布时间:2025-3-1 14:26

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版