gpt4 book ai didi

c++ - 如何使用 TouchGFX 在 LCD 屏幕上显示 ADC 值?

转载 作者:太空宇宙 更新时间:2023-11-04 12:30:51 26 4
gpt4 key购买 nike

我想在 stm32f746G - DISCO 板上的 lcd 屏幕上显示 adc 值。主要挑战来自集成 TouchGFX 软件。这会生成输出小部件和通配符所需的模型、 View 和演示文件。我相信我已经正确设置了我的 adc 引脚 PF10,因为我能够使用以下方法在 main.cpp 中获取 ADC 值:

while (1)
{
HAL_ADC_Start(&hadc3);
HAL_ADC_PollForConversion(&hadc3, 500);
hullVoltage = HAL_ADC_GetValue(&hadc3)*0.00080586;
HAL_Delay(1000);
}

但我的主要目标是在我的液晶屏幕上显示它。我有 touchGFX 设置,我可以在其中将 float 输入到 View.cpp 中的通配符。例如:

void Monitor_ScreenView::handleTickEvent()
{
Unicode::snprintfFloat(textArea2Buffer, 4, "%f", 3.14f);
textArea2.invalidate();
}

我将向您展示我的模型、 View 和演示者 cpp 文件,以说明我的问题所在。

模型.cpp

#include <gui/model/Model.hpp>
#include <gui/model/ModelListener.hpp>

#ifndef SIMULATOR
#include "stm32746g_discovery.h"
#endif

void Model::getHullVoltage()
{
HAL_ADC_Start(&hadc3);
HAL_ADC_PollForConversion(&hadc3, 500);
hullVoltage = HAL_ADC_GetValue(&hadc3);
}

查看.cpp

#include <gui/monitor_screen_screen/Monitor_ScreenView.hpp>
#include <gui/model/Model.hpp>

#ifndef SIMULATOR
#include "stm32746g_discovery.h"
#endif

void Monitor_ScreenView::handleTickEvent()
{
Unicode::snprintfFloat(textArea2Buffer, 4, "%f", presenter->getHullVoltage());
textArea2.invalidate();
}

presenter.cpp


#include <gui/monitor_screen_screen/Monitor_ScreenView.hpp>
#include <gui/monitor_screen_screen/Monitor_ScreenPresenter.hpp>

// my functions
float Monitor_ScreenPresenter::getHullVoltage()
{
return(model->hullVoltage);
}

我从这个构建中得到的唯一错误是来自 model.cpp 的“hadc3 was not declared in this scope”。

如果我能从我的代码中获得任何见解,我将不胜感激。除此之外,我的代码有效,因为我可以用触摸屏上的按钮打开和关闭 LED,我可以在屏幕上我想要的地方打印一个 float ,并且可以获得 adc 值在 main.cpp 中。我只需要它每次都显示在屏幕上。

最佳答案

在 TouchGFX 应用程序的 View 类中编写的代码应该是可移植的,使其能够在模拟器或目标上运行。例如。如果您要通过 Windows 上的 TouchGFX 设计器使用 gcc 运行您的应用程序,您将有未解析的 HAL_ADC_ 符号。将代码替换为调用 View 展示器然后调用模型将提高可移植性并更好地封装功能而不是将其保留在事件处理程序中。

将目标特定代码保留在模型中并使用 #ifdef SIMULATOR 对其进行保护将允许您从键盘事件、滴答事件或外部事件触发模拟器和代码的目标版本硬件。

关于c++ - 如何使用 TouchGFX 在 LCD 屏幕上显示 ADC 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58684084/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com