nextion display 和 stm32 之间的正确通信

问题描述

Nextion 显示屏上有 3 个按钮,可在释放时发送代码。我正在使用 UART 接收数据并将数据发送到 Nextion 显示器。我的问题是有时它会正确地检测到显示中的代码,但不幸的是,有时需要多次尝试才能识别按钮中的代码。例如,当我按下 Nextion 显示器上的一个按钮时,它会发送:40 30 01 00 26。我在 stm32 上使用函数而不会中断来接收数据,但有时它在第一次尝试时不起作用。有人能告诉我如何正确设置 UART 通信吗?

代码如下:

uint8_t NEXTION_tlacitka[5]; // pole s daty z displeje od tlacitka 

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) // Kod pro rozpoznani dat z displeje bez preruseni
{
    
    // Zapnuti Logic. Analyzéru - Turn on of Logic analyzer
    if(NEXTION_tlacitka[2] == 0x04) // rozpoznani dualniho tlacitka z displeje - Dual state button recognition 
        {
            if(NEXTION_tlacitka[3] == 1)// prikaz k zapnuti z displeje - turn on from display
                {
                    NEXTION_power = true; // nastaveni pomocného boolu - setup of bool 
                    
                }
            else{ // prikaz k vypnuti z displeje - turn off 
                
                    NEXTION_power = false; // nastaveni pomocného boolu - setup of bool 
                }
        }
        
        if(NEXTION_tlacitka[2] == 0x01) // rozpoznani prepnuti displeje pro data 1-4 - recognition of switching page in Nextion display
        {
            if(NEXTION_tlacitka[3] == 0) // nastaveni promenne pro spravné odesilani dat - recognition of pressing  
                {
                    NEXTION_dispej = false;
                }
        }
        
        if(NEXTION_tlacitka[2] == 0x03) // rozpoznani prepnuti displeje pro data 5-8 - recognition of switching page 
        {
            if(NEXTION_tlacitka[3] == 0)
                {
                    NEXTION_dispej = true; // nastaveni promenne pro spravné odesilani dat 
                }
        }
HAL_UART_Receive_IT(&huart4,NEXTION_tlacitka,5);
}

in main 
HAL_UART_Receive_IT(&huart4,5); // funkce bez preruseni pro odebirani dat z tlacitka - function 

感谢您对我第一次使用 UART 的任何帮助。谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)