stm32串口通信(232和485)

2019-03-23 19:42发布

232通信时,一个字节一个字节发还可以,但是一旦多个字节一起发,板子最多收到前两个字节,这是怎么回事求指教,
485通信时也是,一个字节没问题,但是多个字节发送的时候就只收的到前面的一个 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
虚V界
2019-03-24 12:18
首先一个问题,你为什么定义buffer 是u16的呢?USART_DR这个寄存器,你看手册只有9位[8:0];
这里可能会出现数据类型转换的问题,
另外我也做过串口立即收发的确有点问题,串口会死掉。
我串口是做到中断中的,进入中断后就吧中断关掉以免噪声扰乱数据处理
void USART1_IRQHandler(void)
{         
      if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)
        {
              USART_ITConfig(USART1,USART_IT_RXNE,DISABLE);          
              Receive_buffer=USART_ReceiveData(USART1);
              USART_Rbuffer[Receive_Count]=Receive_buffer;
          Receive_Count++;
          if(Receive_Count>100) Receive_Count=0;              
              USART_SendData(USART1,Receive_buffer);
              while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);  
      
               USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);  
         }                      
}

一周热门 更多>