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

【STM32H750-DK 车辆仪表】2.与板卡交互

[复制链接]
jundao721 发布时间:2025-12-7 19:56

$ |  ?5 L+ X1 a. r% A      上一篇中实现了界面,只是从软件上展示了界面,如何和硬件完成交互呢?/ V( h6 C# v9 g8 [/ S# H% X
     看TouchGFX designer 说明,其结构使用的是MVP架构,view + presenter + model。简单讲呢,就是VIEW实现UI界面,Presenter实现数据中转,MODEL实现和硬件的交互。2 f9 B4 r: u$ `3 C* _
      OK,理解了架构了,实现起来就容易多了。; e1 F% [2 X3 G3 T& D( \
      查看板卡的原理图,LED部分如图1所示:
; m0 ]- B, C; U; w5 s  s 2-1.png ' o- v3 s9 @/ y% A
图10 O: ?5 h0 @( q

% Z% I) D. D6 c% {下面就是实现MVP架构的应用了。首先在VIEW的函数中加入presenter调用,如下:4 S* S- ?; Y( q- J0 K6 n1 e6 X9 e1 ^
  1. presenter->setLEDState(toggleButton1.getState());
复制代码
9 m+ _% D! F7 @# i8 z
2 P+ R/ d7 a1 h+ }+ @
然后在presenter.cpp中调用model函数,如下:5 n: I- {  k* G4 E, ^" N4 ~6 r: J
  1. void Screen1Presenter::setLEDState(bool state), _. b! R1 p6 ?! [8 j4 j4 B; u
  2. {
    . ^+ E+ ~2 A( d' j9 A! N! D, G
  3.     // Here you can add code to update the model or perform other actions based on the LED state: A! }0 q7 B. l5 C: ~! c8 j
  4.     model->setLed(state);
    8 U& j+ M9 M, q" Y, [$ R, c- N4 T
  5. }
复制代码

) T4 O! w( U/ F
' M( f0 g& L4 Z' O8 c) z" R# e" Q在model.cpp中实现和硬件的交互,如下
" p: ]4 w7 A$ g/ Q& M9 X7 @& v
  1. void Model::setLed(bool state)0 x& X$ c8 |6 N/ t' u/ d9 C  d
  2. {2 o  q. u) {3 i9 E5 b! X, R
  3.   1 L* F6 L2 A7 F9 k  o( x
  4.     if (state)
    ) j; f4 o2 _# O3 @& H+ r
  5.     {
      y0 e: O/ c0 r
  6.         //modelListener->ledStateChanged(ledState);; h6 R( L0 v; e0 y# r+ M
  7.         //HAL_GPIO_WriterPin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET); // Example: Set the GPIO pin high to turn on the LED
    0 m0 a* C; N! T8 i2 D
  8.         HAL_GPIO_WritePin(GPIOD, GPIO_PIN_3, GPIO_PIN_SET); // Turn LED ON
    ' N, v" v3 M/ `' }/ y1 K
  9.     }* F/ V+ d- E9 ]3 b" K, e
  10.     else( o( H. l, }# |2 W1 L  q
  11.     {3 W0 W* ~0 b2 C$ v: A; f
  12.         HAL_GPIO_WritePin(GPIOD, GPIO_PIN_3, GPIO_PIN_RESET); // Turn LED OFF' D9 v" s( p$ s0 D$ C$ ?
  13.     }
    & ]! ]4 x, j8 o% x3 ^3 E/ l
  14. }
复制代码

2 l2 T, q7 _# `
+ P7 T$ h6 E7 f/ R) Z* F当然,还要在相应的hpp文件中加入函数的初始化。
0 Q3 `. D; K1 E9 a( a
9 W1 |% R5 Q6 `9 u5 L
2 {6 N- {9 z  _
要调用板卡的HAL函数库,还需要在model.cpp中增加一部分代码,如下所示:
! C5 @6 [- Y# [* r1 g2 Y" s. z
  1. extern "C" {
    : ?% |5 B: d9 Y7 |
  2. #include "stm32h7xx_hal.h"5 ~/ U7 U+ l* k) U/ m4 |: M
  3. #include "main.h"
    ! p" O" L# e3 S; R
  4. }
复制代码
7 m3 _: ~+ ?$ f5 B
6 b. y8 _3 U( J1 K( j+ n  `
OK,按照第一篇的下载方式,将程序下载到板卡中,效果如图2所示:
3 _6 W9 W( h& f, \0 ~ 2-2.gif
2 o/ h1 J4 Y) K图2( k0 m  k: D8 I9 w; p- E$ h
收藏 评论0 发布时间:2025-12-7 19:56

举报

0个回答

所属标签

相似技术帖

官网相关资源

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