标题: 关于stm32串口接收的问题 [打印本页]

作者: 66632    时间: 2020-5-5 21:32
标题: 关于stm32串口接收的问题
附程序如下
void USART2_IRQHandler(void){         
        u8 res;              
       if(USART_GetITStatus(USART2,USART_IT_RXNE)!=RESET )     //接收数据寄存器非空中断
                 {
                         res =USART_ReceiveData (USART2);//将进入串口2的哪一个数据取出
                         if((USART2_RX_STA&0X8000)==0)   //表明 要么串口2还没有收到数据 或者 收到数据已经后被调用过
                         {
                                if(USART2_RX_STA<USART2_REC_LEN) //判断缓存器是不是已经存满了
                                 {
                                         TIM_SetCounter(TIM3 ,0);//设置TIMx计数器寄存器值 清零定时器 避免其计时到达 进入定时器中断
                                         if(USART2_RX_STA==0)//判断缓存器中是否已经存入数据
                                                 TIM_Cmd (TIM3,ENABLE );//给定时器3 一个新的状态 使能它
                                         USART2_RX_BUF[USART2_RX_STA++]=res;
                                 }
                                 else
                                 {
                                         USART2_RX_STA|=0X8000; //给接收完成标志位置1
                                 }
                    }
                 }
}




如果串口正常接收了两次数据 ,但是第一次数据的长度比第二次收到的长,那么USART2_RX_BUF里面会有第一个数据的残留值吗?

作者: yzx99    时间: 2020-5-7 14:28
如果你用完之后清零了就不会有
作者: ly1972001    时间: 2020-5-7 15:56
会有残留,但不用担心。有变量USART2_RX_STA确定数据长度。
作者: 梦轩星语    时间: 2020-5-7 18:10
会有,还得优化一下
作者: kamikazi    时间: 2020-5-7 22:47
会有,要清零
作者: 66632    时间: 2020-5-10 15:51
kamikazi 发表于 2020-5-7 22:47
会有,要清零

清零是对buf清零,还是对数据长度清零
作者: liufei1117    时间: 2020-5-10 16:44
有点乱




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1