📄 serial.c
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -