串口发送接收
各位大神求帮助,目前串口助手上发送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
串口收发程序供参考:
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=4598
页:
[1]