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

【STM32H750-DK 车辆仪表】4.仪表时钟

[复制链接]
jundao721 发布时间:2025-12-9 20:34
9 A' b4 H, q9 c4 G
      想想车上仪表盘,总得有个时钟,开车的时候可以看看时间。发现GUI控件里有数字时钟,直接拖过来即可。
  L0 ^" T5 S% j( X: F/ t" e5 D如图1:4 R2 O( }, W  \& j2 w7 ]; c
4-1.png & j0 L  _" N# t
图1
0 l" m  a# t3 W+ t6 D
. {0 G2 G/ n: q2 ]$ T7 H$ ^1 b

- o/ Z. h( w3 n( y) N, g       接下来就是让时钟走起来。开始还以为拖过来,改改属性栏,时钟就走呢。发现不是这样的,功能还得自己去实现。
+ a! F3 k$ H  n$ F4 [查查资料,再回到其MVP架构,model里有个Tick函数,为时钟提供精准。# F: V# J4 R( U$ I9 C+ h' a. b2 f
      首先在model.cpp里实现秒分时的定义和初始化,如下所示:4 ?, a$ l% U3 k# m3 F( H; M6 }+ P
  1. tickCounter++;# E7 W  ]" G9 F  o; o3 R, l5 q* A
  2.     if (tickCounter >= 60)       // TouchGFX 60Hz = 1 秒; A* p' M/ J% C( D6 w/ o. d% S
  3.     {
    % u9 B% g. y# k+ @( z5 ?
  4.         tickCounter = 0;! t  q: E; k( O0 i  w3 t* x

  5. 8 ]# {/ ~/ _* q" N' e5 g; [
  6.         second++;: ?& u7 W' o3 Q  H( M
  7.         if (second >= 60) { second = 0; minute++; }! k8 Q, m5 l. J! H; m* a. `* D
  8.         if (minute >= 60) { minute = 0; hour++; }0 j% F( x. U& J2 Z# z
  9.         if (hour >= 24)   { hour = 0; }0 Q& ^- Y/ }7 G& S* @/ W

  10. 8 [, E- J; x% y
  11.         modelListener->timeUpdated(hour, minute, second);% z# {6 A+ j; q3 e
  12.     }
复制代码

0 ]" G) C7 D; N6 C$ M# C7 v, e& b, y# Q) X
     然后需要通过presenter.cpp 去中转这个功能函数,如下所示:' Z3 D2 E* y/ S
  1. view.updateClock(hour, minute, second);
复制代码

: Z; O8 y1 D+ Y- j0 g' F9 G! \1 m3 z. r; L
     然后在view.cpp里展示这个函数的运行,如下所示:7 K, R' h! X) E/ M5 P
  1. digitalClock1.setTime24Hour(hour, minute, second);
    $ b8 H1 O6 f2 s6 B: ]. a
  2.     digitalClock1.invalidate();
复制代码

( z! T# R0 @* |. c6 }3 V6 N6 M2 x5 ]
     最终运行效果如图2所示:$ }3 O+ C" d' M1 |) B
4-2.gif
$ L( Z" U4 e- F! V( @8 D图2( u8 c( x5 |" U
赞 收藏 评论0 发布时间:2025-12-9 20:34

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版