mcxhoten 发表于 2025-2-19 20:56:28

串口发送接收

各位大神求帮助,目前串口助手上发送clear但是打印接收的res_buf空白是什么原因,程序如下void USART_SCAN(void){
        if(Res1_Sign==1)GET_RES1_BUF();
}

void GET_RES1_BUF(void)
{
        do{//接收到最后一个字节 再延时10ms
                        Res1++;
                        delay_ms(1);
                }while(Res1<10);
        GET_UART1_NEWINFO();
        memset(Res1_Buf,0,512);
        Res1_Sign=0;       
        Res1_Count=0;
}

void        GET_UART1_NEWINFO(void)
{
        int i;
        char *str_clear;
printf("Res1_Buf: %s\r\n", Res1_Buf);
        str_clear=        (strstr((char*)Res1_Buf,(const char*)"clear"));
        printf("120\r\n");

                if(str_clear!=NULL){
                        printf("123\r\n");
                        RFID_COUNT=0;
                        for(i=0;i<4;i++){CARD_TEMP0=card_0=0;}Card_Save(0);
                        for(i=0;i<4;i++){CARD_TEMP1=card_1=0;}Card_Save(1);
                        printf("ID0:%s\r\n", CARD_TEMP0);
                        printf("ID1:%s\r\n", CARD_TEMP1);
                        printf("ID2:%s\r\n", CARD_TEMP2);
                        printf("ID3:%s\r\n", CARD_TEMP3);
                }

}
中断函数:

#ifdef UART1
void UART1_ISR_Handler (void) interrupt UART1_VECTOR
{
        if(RI)
        {
                RI = 0;

      if(COM1.RX_Cnt >= COM_RX1_Lenth)        COM1.RX_Cnt = 0;
      RX1_Buffer = SBUF;
      COM1.RX_TimeOut = TimeOutSet1;
                  Res1_Sign=1;
                  Res1=0;
        }

        if(TI)
        {
                TI = 0;
               
      #if(UART_QUEUE_MODE == 1)   //判断是否使用队列模式
                if(COM1.TX_send != COM1.TX_write)
                {
                       SBUF = TX1_Buffer;
                        if(++COM1.TX_send >= COM_TX1_Lenth)                COM1.TX_send = 0;
                }
                else        COM1.B_TX_busy = 0;
      #else
      COM1.B_TX_busy = 0;   //使用阻塞方式发送直接清除繁忙标志
      #endif
        }
}
#endif


DebugLab 发表于 2025-2-19 23:39:12


串口收发程序供参考:
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=4598
页: [1]
查看完整版本: 串口发送接收