- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想在 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/
我将 ADC 与 DMA(STM32F4,ide STM32CubeIDE)一起使用,我认为我了解它是如何工作的,但仍然有一个难题。根据我的理解,MCU 仅在 DMA 传输完成时调用,基本上 MCU
我正在开展一个项目,其中涉及 STM32H743 核板和 16 个 ADC 输入的使用。 显然,这些模拟输入一次使用一次;通过轮询机制读取值并配置下一个输入...配置 ADC channel ,启动
1 指令语法 adc <Xd>, <Xn>, <Xm> 2 指令语义 adc就是带「进位」加法,指令中的c就是英文carry。 整个指令等价于: (Xd
ATtiny88初体验(五):ADC ADC模块介绍 ATtiny88单片机包含一个10bit分辨率的ADC模块,拥有8个通道,最大采样率15kSPS,转换时间14us。ATtiny88的
我正在尝试在 STM32L476 Nucleo 板上调出一个 ADC。我想我已经配置好了,但我一定是漏掉了一步。我知道这可以使用 HAL API 和 CubeMX 来完成,但我更喜欢在启动新板时进行寄
mov eax, ptr_to_num1 ; little endian mov ebx, ptr_to_num2 ; little endian xor ecx, ecx xor edx, edx
.MODEL SMALL .STACK 1000 .DATA MSGA DB 13,10,"Input first number: ","$" MSGB DB 13,10,"Input second
我目前正在对 PIC 微 Controller 进行编程。 当按照我的方式创建结构时,每次我尝试访问该结构的变量的地址是否都会更改? 还是像静态变量一样,意味着地址在编译时确定,并且在整个程序中不会更
大家好,我正在开发一个项目,我必须计算 ADC 读数的移动平均值。从 ADC 输出的数据代表正弦波。 这是我用来获取给定信号的移动平均值的代码。 longNew = (8 bit data from
我希望在每次转换结束后调用 ADC 中断服务程序。但是它没有被调用。 这是我的代码: #define RCC_APB2ENR (*((volatile unsigned long*) 0x4002
有人可以看看我的代码吗?当我旋转电位器时,我试图让 8 个 LED 旋转,但四个 LED 一直保持亮着,根本不旋转。 #include /******************************
目的是将最新的 10 个 ADC 读数存储在一个数组中,然后计算它们的平均值以供其他地方使用。每次更新时删除最旧的。 关于 LED 时序,如果 ADC 读数在下面写的边界内,它必须将时序从 1s 切换
我正在尝试将音频ADC(wm8782 / pcm1803a)与Beagle Black连接。我已经对文件 davinci-evm , wm8782.c 和BB-BONE-AUDI-01设备树覆盖文件进
我正在尝试在简单的连续转换模式下通过 STM32F411RE 配置 ADC。我使用 CubeMX 生成基于 HAL 驱动程序的代码,这是生成的代码中初始化 ADC 的部分内容: /* ADC1 ini
我只是对我用 C 编写的反汇编 32 位程序进行一些分析。以下是反汇编程序输出的一部分: 41153c 02 00 add al, [eax] 41153e 00 00 add [eax]
我一直在运行Blarggs CPU tests通过我的 Gameboy 模拟器,op r,r 测试表明我的 ADC 指令工作不正常,但 ADD 是。我的理解是两者之间的唯一区别是在添加之前将现有的进位
我正在使用Renesas RX62N ;我的屏幕使用 ADC 单元 1,我的代码使用单元 0。 难道两个ADC单元不能一起工作吗?当我分别运行“ADC”和“显示代码”时,它工作正常,但一旦我尝试将它们
描述很长,抱歉。我用粗体突出显示了问题。 我目前正在尝试建立一个 driverlib 机制来执行以下操作: 大约每 20 个 RTC 预分频器 1 事件,检查是否应进行 ADC 测量。 如果需要,请设
我正在努力让 ADC 与我的设备配合使用。我正在使用 dsPIC33FJ128GP802,并尝试通过手动采样和转换缓慢启动。 我的代码发布在下面,我已经设置了 ADC 的每个寄存器,然后尝试仅采样一次
我的板上有一个 adc 模块。我在信号发生器上创建了一个正弦波。我将这个发生器的输出提供给一个 adc 引脚。最后我定期读取这个引脚的值。我尝试在我的软件上创建一个正弦波。 x = t, y = As
我是一名优秀的程序员,十分优秀!