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

【STM32H750-DK 车辆仪表】6.模拟温度和胎压监测

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

      当设备接外部传感器的时候,通过数据采样,需要在UI界面上将数据实时显示出来。这里以UI界面中的温度和胎压监测为例。还是以UI的MVP结构为基础,通过上位机串口发送数据,模拟实际传感器的测量数据,在UI界面上显示。
OK,UI界面图如图1和图2所示:
6-1.png
图1
6-2.png
图2
要在UI程序架构里增加UART通讯,先在原理图中查找相应的接口,如图3所示:
6-4.png
图3
USART3正好可以应用,连接好线,测试发现,这个接口不能使,原因尚未找到。然后找到了USART2接口,需要调整下短接电阻,如图4所示:
6-5.png
图4
经测试,这个接口是可以使用的。所谓有坑也得迈过去。


定义中断,如下所示:
  1. TouchGFX_SetUartRxByte(aRxBuffer);
  2.         HAL_UART_Receive_IT(&huart2, &aRxBuffer,1);
复制代码


因为程序使用的是FreeRtos的架构,所以还得在默认任务里添加中断。


简单测试一下,能收到数据,没有问题。下面修改UI的代码。


现在Model.cpp 中完成数据采集,如下:
  1. void Model::setUartRxByte(uint8_t b)
  2. {
  3.     uartRxByte = b;

  4.     if (modelListener != nullptr)
  5.     {
  6.         modelListener->onUartRxByteChanged(b);
  7.     }
  8. }
复制代码


presenter.cpp 完成中转,如下所示:
  1. void Screen1Presenter::onUartRxByteChanged(uint8_t b)
  2. {
  3.     view.updateRxValue(b);
  4. }
复制代码


然后在view.cpp 中完成数据显示,如下所示:
  1. void Screen1View::updateRxValue(uint8_t b)
  2. {
  3.     // static uint8_t lastValue = 255;   // 不可能出现的初始值

  4.     // if (b != lastValue)               // 只有变化才更新 UI
  5.     // {
  6.     //     lastValue = b;

  7.     //     Unicode::snprintf(textArea5Buffer, TEXTAREA5_SIZE, "%d", b);
  8.     //     textArea5.invalidate();
  9.     // }
  10.     Unicode::snprintf(textArea5Buffer, TEXTAREA5_SIZE, "%d", b);
  11.     textArea5.invalidate();
  12. }
复制代码


最后的效果,通过串口助手发送数据,如图5:
6-3.png
图5
UI界面实时显示,如图6所示:
6-6.jpg
图6
实际操作还是很好玩的,如图7所示:
6-7.gif
图7
收藏 评论0 发布时间:2025-12-11 19:25

举报

0个回答

所属标签

相似分享

官网相关资源

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