找回密码
 立即注册
查看: 348|回复: 2

uart发送命令返回无法存储数据

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-04-24 10:09:25

8

主题

9

回帖

137

积分

注册会员

积分
137
发表于 2024-4-16 18:03:25 | 显示全部楼层 |阅读模式
本人小白,写了一段代码,需要stc发送三段不同的询问代码分别询问温度湿度和压力的数据,分别将返回的三段代码中的第二和第三个数据(温度湿度压力的数值),存储到变量中,用于LCD显示。示波器硬件检测,代码发送正确,返回数据正确,但是,代码运行起来不能存储数据,不能更新数据到LCD。其中step_A,step_B,step_C由中断控制,200ms触发一次询问。
求大佬帮忙分析问题在哪里。
代码如下。
/***********************************************/
void main(void)
{
        u8        i;
        EAXSFR();                /* 扩展寄存器访问使能 */
        GPIO_config();
        UART_config();
        Timer_config();
        Init_lcd();
        EA = 1;
        while (1)
        {
                u8 temp_h = 0;
                u8 temp_l = 0;
                u8 hum_h = 0;
                u8 hum_l = 0;               
                u8 press_h = 0;
                u8 press_l= 0;                                                       
               
                send_buffer[0]        = 0x01;
                send_buffer[1]        = 0x03;
                send_buffer[2]        = 0x00;
               
                send_buffer[4]        = 0x00;
                send_buffer[5]        = 0x01;
                send_buffer[6]        = 0x84;
                send_buffer[7]        = 0x05;
               
    if (step_A == 1)
                        {  
                               send_buffer[3] = 0x30; // 设置发送地址为0x30  
                                        for(i=0; i<8; i++)
                                        {
                                                TX1_write2buff(send_buffer[i])  ;
                                        }
                                temp_h=RX1_Buffer[3] ;
                                temp_l=RX1_Buffer[4] ;                                                       
                                temp_num2 = (int)temp_h*256 + temp_l; // 假设数据是高字节在前
                                step_A = 0;       
                                }



回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:135
  • 最近打卡:2024-12-25 10:15:05

47

主题

1350

回帖

8058

积分

荣誉版主

冲哥视频教程和各种开源资料QQ交流群884047237,可群

积分
8058
QQ
发表于 2024-4-17 08:57:35 | 显示全部楼层
串口发完数据怎么就直接读取数据了,这里要加一个判断等待串口数据接收完成才可以!去看下我的视频教程,关于串口部分的那几集。
截图202404170857055865.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-04-24 10:09:25

8

主题

9

回帖

137

积分

注册会员

积分
137
发表于 2024-4-17 10:50:00 | 显示全部楼层
电子DI*** 发表于 2024-4-17 08:57
串口发完数据怎么就直接读取数据了,这里要加一个判断等待串口数据接收完成才可以!去看下我的视频教程,关 ...

修改成了这种模式,有了接收判断,但是还是没有存到数据
if (step_A == 1) {  
        send_buffer[3] = 0x30; // 设置发送地址为0x30  
                                        for(i=0; i<8; i++)TX1_write2buff(send_buffer);                       
                                        if(COM1.RX_TimeOut > 0)                //超时计数
                                                {
                                                        if(--COM1.RX_TimeOut == 0)
                                                        {
                                                                if(COM1.RX_Cnt > 0)
                                                                {
                                                                                temp_h=RX1_Buffer[3] ;
                                                                                temp_l=RX1_Buffer[4] ;                                                       
                                                                                temp_num2 = (int)temp_h*256 + temp_l; // 假设数据是高字节在前
                                                                }
                                                                COM1.RX_Cnt = 0;
                                                        }
                                                }       
                                step_A = 0;       
                        }

回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-3 20:33 , Processed in 0.107882 second(s), 65 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表