stm32串口通信(232和485)

2019-03-23 19:42发布

232通信时,一个字节一个字节发还可以,但是一旦多个字节一起发,板子最多收到前两个字节,这是怎么回事求指教,
485通信时也是,一个字节没问题,但是多个字节发送的时候就只收的到前面的一个 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
yyup
2019-03-23 22:55
/ #include "includes.h" u16 USART1_ReceiveData();void USART1_SendData(u16 buffer);u16 USART3_ReceiveData();void USART3_SendData(u16 buffer);/********************************************************************************************************* 函 数 名 :  void main(void)* 描    述 : main* 输入参数 : None.* 输出参数 : None.* 返   回  : None.********************************************************************************************************/void main(void){     u16 i,j,buffer;    u16 swdata;    u32 sngtmp;                //目标板初化,    Target_Init();       /********开机扫描*******/    USART_Cmd(USART1,ENABLE);    USART_Cmd(USART3,ENABLE);    //LED_open();        
    for(i=0;i<30000;i++)    {      for(j=1;j<9;j++)      {        Hex_test(j,8);        GPIO_SetBits(GPIOC, HEX_D7);      }     }     Hex_close();            while(1)    {        buffer=USART1_ReceiveData();        USART1_SendData(buffer);        if(buffer==0x01)          Display_LedScan();        if(buffer==0x02)        {LED_open();        Delay_uS(100000);        LED_close();        }    }    }
u16 USART1_ReceiveData(){ //Delay_uS(100);    while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);     return USART_ReceiveData(USART1);}void USART1_SendData(u16 buffer){ //Delay_uS(100);    USART_SendData(USART1,buffer);   while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);}u16 USART3_ReceiveData(){ //Delay_uS(100);    while(USART_GetFlagStatus(USART3, USART_FLAG_RXNE) == RESET);        return USART_ReceiveData(USART3);}void USART3_SendData(u16 buffer){    // Delay_uS(100);     GPIO_SetBits(UART3_GRP, UART3_485_DIR);        Delay_uS(1000);     USART_SendData(USART3,buffer);     while(USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET);        Delay_uS(1000);     GPIO_ResetBits(UART3_GRP, UART3_485_DIR);}

一周热门 更多>