serial.c

来自「自己写的无线sinffer,可以通过串口查看空间内所有无线数据」· C语言 代码 · 共 70 行

C
70
字号
#include "serial.h"
#include "board.h"
#include "ap.h"

extern AP_ATTRIBUTE apAttribute;
extern BYTE WifiCommand[MAXUARTBYTE];
void InitUART(void)
{
   IO_PER_LOC_UART1_AT_PORT0_PIN2345();
   SET_MAIN_CLOCK_SOURCE(CRYSTAL);
   UART_SETUP(1, 115200, HIGH_STOP);
   //URX1IE=1;//接收中断开启
   U1CSR=U1CSR|0x80;//串型口为UART而不是SPI,同时UART接收使能
  // U0UCR=U0UCR&~0X80;//initUART改变了一些东西,改回来
   UTX1IF=1;
}
/*
BYTE putchar (BYTE c)  {
   while (!UTX0IF);
   UTX0IF = 0;
   return (U0DBUF =c);
}
*/

/*
#pragma vector=URX0_VECTOR
__interrupt void URX0_IRQ(void){
}*/
#pragma vector=URX1_VECTOR
__interrupt void URX1_IRQ(void){
  P1_0=0;
  GLOBAL_INT_ENABLE(INT_OFF);

   if(apAttribute.uartCnt==0x00&&U1DBUF==0x01)//起始字节
   {
   WifiCommand[apAttribute.uartCnt]=U1DBUF;
   apAttribute.uartCnt++;
   }
   else
   {
     if(apAttribute.uartCnt>=MAXUARTBYTE)
     {
       apAttribute.flags.bit.uartOverFlow=TRUE;
       apAttribute.uartCnt--;  //用来存结束标志
     }
     if(U1DBUF==0x55)
     {
       apAttribute.flags.bit.uartGet55=TRUE;
       WifiCommand[apAttribute.uartCnt]=U1DBUF;
       apAttribute.uartCnt++;
     }
     else
     {
      if(apAttribute.flags.bit.uartGet55==TRUE&&U1DBUF==0xD5)
      {
       WifiCommand[apAttribute.uartCnt]=U1DBUF;
       apAttribute.flags.bit.uartRecPacket=TRUE;
      }
      else
      {
       WifiCommand[apAttribute.uartCnt]=U1DBUF;
       apAttribute.uartCnt++;
      }
      apAttribute.flags.bit.uartGet55=FALSE;
     }
   }
   URX1IF=0;
  GLOBAL_INT_ENABLE(INT_ON);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?