野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14203|回复: 8

F4串口通讯怎么把收到的字符一个一个读出来,并且判断

[复制链接]
发表于 2017-2-19 11:36:00 | 显示全部楼层 |阅读模式
各位大神问一下,串口通讯怎么把我发送的字符一个一个读出来,并且判断。我自己写的程序有个bug,就是单独发送第一个字符,也是可以执行程序,而不是一定要验证两个字符才能执行程序。比如下面的程序,我发送a1,程序可以执行,但我发送a,程序也是可以执行的,这个怎么解决?

int main(void)
{
       
        u8 Tx_Buf[8];   //要发送的数据
        u8 t;
        u16 len;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
        delay_init(168);                //延时初始化
        uart_init(115200);        //串口初始化波特率为115200
        LED_Init();                                  //初始化与LED连接的硬件接口  
        while(1)
        {
                if(USART_RX_STA&0x8000)
                {                                          
                        len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
                       
                        printf("\r\n您发送的消息为:\r\n");
                        for(t=0;t<len;t++)
                        {
                                USART_SendData(USART1, USART_RX_BUF[t]);         //向串口1发送数据
                                Tx_Buf[t]=USART_RX_BUF[t];
                                while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
                        }
                       
                        if(Tx_Buf[0]=='a'&&Tx_Buf[1]=='1')
                                {
                                        LED1=!LED1;
                                        delay_ms(100);
                                       
                                }       
                               
                        printf("\r\n\r\n");//插入换行
                        USART_RX_STA=0;
       
                }
        }       
}       

回复

使用道具 举报

发表于 2017-2-19 11:56:50 | 显示全部楼层
if(Tx_Buf[0]=='a'&&Tx_Buf[1]=='1')
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-19 14:04:50 | 显示全部楼层
hehuibo 发表于 2017-2-19 11:56
if(Tx_Buf[0]=='a'&&Tx_Buf[1]=='1')

我就是用这个,可是不对啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-20 19:25:47 | 显示全部楼层
有没有哪位大神帮帮?
回复 支持 反对

使用道具 举报

发表于 2017-2-20 20:20:20 | 显示全部楼层
星辰世界 发表于 2017-2-19 14:04
我就是用这个,可是不对啊

是改这里!!!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-20 20:43:10 | 显示全部楼层
hehuibo 发表于 2017-2-20 20:20
是改这里!!!!

你能不能改一个,借我看看,我改了还是不行
回复 支持 反对

使用道具 举报

发表于 2017-2-20 21:43:42 来自手机 | 显示全部楼层
星辰世界 发表于 2017-2-20 20:43
你能不能改一个,借我看看,我改了还是不行

我们配套的串口通信里面的历程不就有嘛 串口控制RGB灯亮灭的就是
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-20 22:31:43 | 显示全部楼层
fire 发表于 2017-2-20 21:43
我们配套的串口通信里面的历程不就有嘛 串口控制RGB灯亮灭的就是

如果是按照我这种编法,我的主函数那段收到字符的判断语句该怎么编写?
回复 支持 反对

使用道具 举报

发表于 2017-2-23 09:48:06 | 显示全部楼层
少一个清空 tx_buf,你每次都是从第一个开始写,第二个不变的话,永远是1
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-1-15 06:51 , Processed in 0.030625 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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