关于串口通信的几个问题

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
1楼-- · 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;
            }
peng1554
2楼-- · 2019-07-20 11:38
 精彩回答 2  元偷偷看……
wangxiaoxiao
3楼-- · 2019-07-20 12:33
1208 发表于 2018-10-1 11:23
你把程序改写成这样试下,这下面输入1灯会亮
if(USART_RX_STA&0x8000)
        {                     
...

嗯嗯  谢谢
wangxiaoxiao
4楼-- · 2019-07-20 17:34
 精彩回答 2  元偷偷看……
jaems
5楼-- · 2019-07-20 19:52
 精彩回答 2  元偷偷看……
wangxiaoxiao
6楼-- · 2019-07-20 22:12
jaems 发表于 2018-10-2 19:12
1.单片机每次进入中断接收的一组数据是一个字节吗?
答:每次单片机串口只要有数据就会触发串口中断,所以 ...

嗯嗯,谢谢你写了这么多,看了你的解释,还是明白了一些东西,对于初学者我来说,或许一个非常简单的问题都要搞好久才能明白,感谢前辈些不吝赐教

一周热门 更多>