首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在STM32F429 TOUCHGFX的ScreenView页面中添加循环和延迟?

如何在STM32F429 TOUCHGFX的ScreenView页面中添加循环和延迟?
EN

Stack Overflow用户
提问于 2021-07-09 18:45:21
回答 1查看 128关注 0票数 0

当我在ScreenView页面上的handletickevent函数中编写HCSR04传感器的软件时,屏幕冻结并且不工作。我该如何解决这个问题?我想循环STM32F429的屏幕,我想让它在屏幕上刷新,但我做不到。如果你能给我一个不同的方法或建议,我将非常高兴。

!!如何在touchgfx屏幕上显示具有更新值​​的HCSR04传感器?

非常感谢大家。干得好。

代码语言:javascript
复制
#include <gui/screenhcsr04_screen/ScreenHCSR04View.hpp>
#include "stm32f4xx_hal.h"
#include "DWT_Delay.h"

uint32_t time;
uint16_t distance;

uint32_t Read_HCSR04()
{
    uint32_t local_time=0;
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET); 
    DWT_Delay_us(10); 

    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET); 

    while(!HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_2)); 

    while(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_2)) 
    {
        local_time++;

        DWT_Delay_us(1);
    }
    return local_time;
}

ScreenHCSR04View::ScreenHCSR04View()
{

}

void ScreenHCSR04View::setupScreen()
{
    ScreenHCSR04ViewBase::setupScreen();
}

void ScreenHCSR04View::tearDownScreen()
{
    ScreenHCSR04ViewBase::tearDownScreen();
}


void ScreenHCSR04View::handleTickEvent()
{
time = Read_HCSR04();
distance = time / 58 ;
Unicode::snprintf(textArea2Buffer, sizeof(textArea2Buffer), "%d", distance);
textArea2.invalidate();
}
EN

回答 1

Stack Overflow用户

发布于 2021-08-15 01:33:11

您不能在ScreenView中执行业务逻辑,请在其演示器中进行处理。使用tick_handler读取数据,然后更新到屏幕视图。建议理解ToughGFX的MVP模型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68315489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档