[STM32F1] 串口通信 stm32F103 问题

[复制链接]
1330|5
 楼主| ghwcxh 发表于 2017-6-19 16:10 | 显示全部楼层 |阅读模式
这个是原来原子的程序改变的,之前是接收到.....0x0d 0x0a表示正确接受。 现在的想法是接收到0x0d......0x0a就正确接受,中间的是字节数据。请高收指教有什么错误
void USART1_IRQHandler(void)
{
        u8 res;       
#if SYSTEM_SUPPORT_OS                
        OSIntEnter();   
#endif
        if(USART1->SR&(1<<5))       
        {         
                res=USART1->DR;
                if((USART_RX_STA&0x8000)==0)//½ÓÊÕδÍê³É
                {
                        if(USART_RX_STA&0x4000)//½ÓÊÕµ½ÁË0x0d
                        {
                                if(res!=0x0a)
                                {
                                        USART_RX_BUF[USART_RX_STA&0X3FFF]=res;
                                        USART_RX_STA++;
                                        if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;//½ÓÊÕÊý¾Ý´íÎó,ÖØÐ¿ªÊ¼½ÓÊÕ          
                                }                 
                                else USART_RX_STA|=0x8000;        //½ÓÊÕÍê³ÉÁË
                        }
                        else //»¹Ã»ÊÕµ½0X0D
                        {       
                                if(res==0x0d)
                                        USART_RX_STA|=0x4000;
                        }
                }                                                                                                
        }
#if SYSTEM_SUPPORT_OS         //Èç¹ûSYSTEM_SUPPORT_OSÎªÕæ£¬ÔòÐèÒªÖ§³ÖOS.
        OSIntExit();                                                                                           
#endif
}
feelhyq 发表于 2017-6-19 16:45 | 显示全部楼层
这个属于逻辑问题,自己整理整理思路还是能够出来的,相信你可以的
 楼主| ghwcxh 发表于 2017-6-19 17:13 | 显示全部楼层
feelhyq 发表于 2017-6-19 16:45
这个属于逻辑问题,自己整理整理思路还是能够出来的,相信你可以的

逻辑没有问题的,  if(USART_RX_STA>(USART_REC_LEN-1)) 中的USART_RX_STA用错了,应该是USART_RX_STA&0x3FF
feelhyq 发表于 2017-6-19 17:28 | 显示全部楼层
ghwcxh 发表于 2017-6-19 17:13
逻辑没有问题的,  if(USART_RX_STA>(USART_REC_LEN-1)) 中的USART_RX_STA用错了,应该是USART_RX_STA&0x ...

嗯,你这不是解决了嘛?  逻辑问题就是跟硬件没有关系的问题。
joing1999 发表于 2017-6-19 17:33 | 显示全部楼层
楼上好人啊。知道问题,但不告诉楼主,培养楼主的主动思考能力,楼主应该谢谢2楼大神。
zhuotuzi 发表于 2017-6-19 17:54 | 显示全部楼层
之前是接收到.....0x0d 0x0a表示正确接受。 现在的想法是接收到0x0d......0x0a就正确接受???这描述有问题?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

165

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部