关于串口通信的几个问题

2019-07-20 05:39发布

最近在看关于串口通信,困扰了我好几天的问题,对于串口通信这个概念还是很模糊,看了很多帖子还是没搞明白1.单片机每次进入中断接收的一组数据是一个字节吗?

2.用XCOM给单片机发送数据它是自动给数据加上0x0d0x0a结尾标志吗?单片机是怎样开始接收这组数据的?
3.我用原子的串口例程改编,想实现如下功能
1.  XCOM发送 ‘1’  LED0开 ,发送‘2’ LED0关
我的过程
我在中断服务函数里面判断接收到的是“1”,or '2'。  定义了两个变量如果是‘1’  flag0=1.如果是‘2’  flag1=1.
在主函数里面判断flag0 flag1的值,然后flag0 flag1置零,并对相应的引脚拉高拉低电平
发现灯没反应,请问这是我的方法不对还是哪里出了问题





友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
12条回答
1208
2019-07-20 08:54
你把程序改写成这样试下,这下面输入1灯会亮
if(USART_RX_STA&0x8000)
        {                     
            len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
            printf(" 您发送的消息为:");
            for(t=0;t<len;t++)
            {
                USART_SendData(USART1, USART_RX_BUF[t]);         //向串口1发送数据
                while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
            }
            if(USART_RX_BUF[0]=='1')
            {        
               printf(" LED1亮 ");
               LED1=0;
            }

一周热门 更多>