00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include "includes.h"
00011
00012 const U8 Uart2Name[]="UART2";
00013 UART2_CONTROL Uart2Ctrl;
00014
00015 void Uart2Init(void){
00016 PicIrqDisable(IRQ3_COM2);
00017 Uart2Ctrl.HasData=false;
00018 Uart2Ctrl.RxData=0;
00019 OutByte((U32)(COM2_BASE+IER),0x00);
00020 OutByte((U32)(COM2_BASE+LCR),0x80);
00021 OutByte((U32)(COM2_BASE+DLLR),BAUDRATE_38400);
00022 OutByte((U32)(COM2_BASE+DLHR),0x00);
00023 OutByte((U32)(COM2_BASE+LCR),0x03);
00024 OutByte((U32)(COM2_BASE+FCR),0x00);
00025 OutByte((U32)(COM2_BASE+MCR),0x0b);
00026 OutByte((U32)(COM2_BASE+IER),0x01);
00027 OsEventAdd(&Uart2Ctrl.Uart2Event,&Uart2Name,OS_EVENT_UART2);
00028 InterruptIrqHandlerSet(IRQ3_COM2,Uart2Handler);
00029 PicIrqEnable(IRQ3_COM2);
00030 }
00031
00032 void Uart2Handler(void){
00033 U8 i;
00034
00035 i=InByte(COM2_BASE+LSR);
00036 if(i&COM1_LSR_DR){
00037 Uart2Ctrl.RxData=InByte(COM2_BASE+RXREG);
00038 Uart2Ctrl.HasData=true;
00039 }
00040 }
00041
00042 void Uart2Svc(void){
00043 if(Uart2Ctrl.HasData==true){
00044 Uart2Ctrl.HasData=false;
00045 GuiStringPrint("\nCOM2 RX: ");
00046 GuiU8Print(Uart2Ctrl.RxData);
00047 }
00048 }