drivers/serial/uart0.c File Reference

Go to the source code of this file.

Functions

void F_Uart0Initial (void)
void F_Uart0BufferReset (void)
INT8U F_Uart0RxBufferCheck (void)
INT8U F_Uart0RxBufferCheckIsr (void)
void F_Uart0RxBufferPut (INT8U Data)
void F_Uart0RxBufferPutIsr (INT8U Data)
INT8U F_Uart0RxBufferGet (void)
INT8U F_Uart0TxBufferCheckIsr (void)
INT8U F_Uart0TxBufferCheck (void)
void F_Uart0TxBufferPut (INT8U Data)
INT8U F_Uart0TxBufferGet (void)
INT8U F_Uart0TxBufferGetIsr (void)
void F_Uart0BaudrateSet (INT32U Baudrate)
void F_Uart0IsrHook (void)
void F_Uart0CharTx (INT8 Data)
INT8 F_Uart0RxCheck (void)
INT8 F_Uart0CharRx (void)
void F_Uart0StringTx (INT8 *pString)
INT8 kbhit (void)
INT8 getkey (void)
INT8 getc (void)
void putc (INT8 Data)
char putch (INT8 Data)
void puts (INT8 *pString)
INT8 getch (void)
INT32 strlen (const char *String)
void F_StringPut (const char *String)
void F_Uart0Svc2 (void)
void F_Uart0Svc (void)


Function Documentation

void F_StringPut ( const char *  String  ) 

Definition at line 274 of file uart0.c.

00274                                     {
00275     //putnstr(String, strlen(String));
00276 }

void F_Uart0BaudrateSet ( INT32U  Baudrate  ) 

Definition at line 179 of file uart0.c.

00179                                         {
00180     Uart0Ctrl.pUart0Register->UBRDIV =50000000/(16*Baudrate); // gcc no support floating calculate
00181     //Uart0Ctrl.pUart0Register->UBRDIV =(INT32U)(((50000000/(16.0*Baudrate))+0.5)-1);
00182 }

void F_Uart0BufferReset ( void   ) 

Definition at line 46 of file uart0.c.

00046                              {
00047     Uart0Ctrl.TxBuffer.Get=0;
00048     Uart0Ctrl.TxBuffer.Put=0;
00049     Uart0Ctrl.RxBuffer.Get=0;
00050     Uart0Ctrl.RxBuffer.Put=0;
00051 }

INT8 F_Uart0CharRx ( void   ) 

Definition at line 215 of file uart0.c.

00215                         {
00216     INT8U Data;
00217 
00218     if(F_Uart0RxBufferCheck()!=UART0_BUFFER_EMPTY){
00219         Data=F_Uart0RxBufferGet();
00220         return (INT8)Data;
00221     }
00222     return 0;
00223 }

void F_Uart0CharTx ( INT8  Data  ) 

Definition at line 207 of file uart0.c.

00207                              {
00208     //while(F_Uart0RxBufferCheck()==UART0_BUFFER_FULL); // wait if beffer full
00209     F_Uart0TxBufferPut((INT8U)Data);
00210 }

void F_Uart0Initial ( void   ) 

Definition at line 12 of file uart0.c.

00012                          {
00013     // UART0 sfr initialize
00014     //******
00015     //rULCON0=0x00;   // uart line control register
00016     //rUCON0=0x00;    // uart control register
00017     //rUFCON0=0x00;   // uart FIFO control register
00018     //rUMCON0=0x00;   // uart cF_IsrTimer4hannel 0 moden control register
00019     //Data=UTRSTAT0;  // uart transmit receive status register
00020     //Data=rUERSTAT0; // uart error status register
00021     //Data=rUFSTAT0;  // uart fifo status
00022     //Data=rUMSTAT0;  // uart moden status register
00023 
00024     HandleUART0=(INT32U)F_IsrUart0;
00025     Uart0Ctrl.pUart0Register=(UART0_REGISTER *)0x50000000;
00026     Uart0Ctrl.pUart0Register->ULCON=0x00000003; // n.8.1
00027     Uart0Ctrl.pUart0Register->UCON=0x00000045;  // enable tx,rx 
00028     Uart0Ctrl.pUart0Register->UFCON=0x00000000;
00029     Uart0Ctrl.pUart0Register->UMCON=0x00000000;
00030     Uart0Ctrl.pUart0Register->UTRSTAT=0x00000006;
00031     Uart0Ctrl.pUart0Register->UBRDIV=((int)(50000000/(16.*19200)+0.5)-1); //set baudrae to 19200
00032     //Uart0Ctrl.pUart0Register->UERSTAT=0x00000000; // read only
00033     //Uart0Ctrl.pUart0Register->UFSTAT=0x00000000;  // read only
00034     //Uart0Ctrl.pUart0Register->UMSTAT=0x00000000;  // read only
00035     //Uart0Ctrl.pUart0Register->UTXH=0x00000000;    // write only
00036     //Uart0Ctrl.pUart0Register->URXH=0x00000000;    // read only
00037     //Uart0Ctrl.pUart0Register->UBRDIV=0x00000000;
00038     Uart0Ctrl.TxBuffer.Get=0;
00039     Uart0Ctrl.TxBuffer.Put=0;
00040     Uart0Ctrl.RxBuffer.Get=0;
00041     Uart0Ctrl.RxBuffer.Put=0;
00042     Uart0Ctrl.UartTxTransmit=0;
00043     //Uart0Ctrl.TxState=Uart0TxIdleState;
00044     //Uart0Ctrl.RxState=Uart0RxIdleState;
00045 }

void F_Uart0IsrHook ( void   ) 

Definition at line 183 of file uart0.c.

00183                          {
00184     INT8U Data;
00185 
00186     ClearSubPending(BIT_SUB_RXD0|BIT_SUB_TXD0|BIT_SUB_ERR0);
00187     ClearPending(BIT_UART0);
00188     if(rUTRSTAT0&UART0_UTRSTAT0_TX){  // tx int
00189         /*if(F_Uart0TxBufferCheckIsr()==UART0_BUFFER_EMPTY){
00190             Uart0Ctrl.UartTxTransmit=0;
00191         }
00192         else{
00193             Data=F_Uart0TxBufferGetIsr();
00194             SERIAL_WRITE_CHAR(Data);
00195         }*/
00196         Uart0Ctrl.UartTxTransmit=0;
00197     }
00198     if(rUTRSTAT0&UART0_UTRSTAT0_RX){  // rx int
00199         Data=SERIAL_READ_CHAR();
00200         F_Uart0RxBufferPutIsr(Data);
00201     }
00202     if(rUERSTAT0&0x0f){
00203         //F_Uart0RxError();           // error int
00204     }
00205 }

INT8U F_Uart0RxBufferCheck ( void   ) 

Definition at line 52 of file uart0.c.

00052                                 {
00053     if(Uart0Ctrl.RxBuffer.Put!=Uart0Ctrl.RxBuffer.Get){
00054         if(Uart0Ctrl.RxBuffer.Put==(UART0_MAX_BUFFER_SIZE-1)){
00055             if(Uart0Ctrl.RxBuffer.Get==0) return UART0_BUFFER_FULL;
00056             else return UART0_BUFFER_NOT_EMPTY;
00057         }
00058         else{
00059             if((Uart0Ctrl.RxBuffer.Put+1)==Uart0Ctrl.RxBuffer.Get) return UART0_BUFFER_FULL;
00060             else return UART0_BUFFER_NOT_EMPTY;
00061         }
00062     }
00063     else return UART0_BUFFER_EMPTY;
00064 }

INT8U F_Uart0RxBufferCheckIsr ( void   ) 

Definition at line 65 of file uart0.c.

00065                                    {
00066     if(Uart0Ctrl.RxBuffer.Put!=Uart0Ctrl.RxBuffer.Get){
00067         if(Uart0Ctrl.RxBuffer.Put==(UART0_MAX_BUFFER_SIZE-1)){
00068             if(Uart0Ctrl.RxBuffer.Get==0) return UART0_BUFFER_FULL;
00069             else return UART0_BUFFER_NOT_EMPTY;
00070         }
00071         else{
00072             if((Uart0Ctrl.RxBuffer.Put+1)==Uart0Ctrl.RxBuffer.Get) return UART0_BUFFER_FULL;
00073             else return UART0_BUFFER_NOT_EMPTY;
00074         }
00075     }
00076     else return UART0_BUFFER_EMPTY;
00077 }

INT8U F_Uart0RxBufferGet ( void   ) 

Definition at line 100 of file uart0.c.

00100                               {
00101     INT8U Data;
00102 
00103     if(F_Uart0RxBufferCheck()==UART0_BUFFER_EMPTY) return 0;
00104     if(Uart0Ctrl.RxBuffer.Get==(UART0_MAX_BUFFER_SIZE-1)){
00105         Data=Uart0Ctrl.RxBuffer.Data[Uart0Ctrl.RxBuffer.Get];
00106         Uart0Ctrl.RxBuffer.Get=0;
00107     }
00108     else{
00109         Data=Uart0Ctrl.RxBuffer.Data[Uart0Ctrl.RxBuffer.Get];
00110         Uart0Ctrl.RxBuffer.Get++;
00111     }
00112     return Data;
00113 }

void F_Uart0RxBufferPut ( INT8U  Data  ) 

Definition at line 78 of file uart0.c.

00078                                    {
00079     if(F_Uart0RxBufferCheck()==UART0_BUFFER_FULL) return;
00080     if(Uart0Ctrl.RxBuffer.Put==(UART0_MAX_BUFFER_SIZE-1)){
00081         Uart0Ctrl.RxBuffer.Data[Uart0Ctrl.RxBuffer.Put]=Data;
00082         Uart0Ctrl.RxBuffer.Put=0;
00083     }
00084     else{
00085         Uart0Ctrl.RxBuffer.Data[Uart0Ctrl.RxBuffer.Put]=Data;
00086         Uart0Ctrl.RxBuffer.Put++;
00087     }
00088 }

void F_Uart0RxBufferPutIsr ( INT8U  Data  ) 

Definition at line 89 of file uart0.c.

00089                                       {
00090     if(F_Uart0RxBufferCheckIsr()==UART0_BUFFER_FULL) return;
00091     if(Uart0Ctrl.RxBuffer.Put==(UART0_MAX_BUFFER_SIZE-1)){
00092         Uart0Ctrl.RxBuffer.Data[Uart0Ctrl.RxBuffer.Put]=Data;
00093         Uart0Ctrl.RxBuffer.Put=0;
00094     }
00095     else{
00096         Uart0Ctrl.RxBuffer.Data[Uart0Ctrl.RxBuffer.Put]=Data;
00097         Uart0Ctrl.RxBuffer.Put++;
00098     }
00099 }

INT8 F_Uart0RxCheck ( void   ) 

Definition at line 211 of file uart0.c.

00211                          {
00212     if(F_Uart0RxBufferCheck()!=UART0_BUFFER_EMPTY) return TRUE;
00213     else return FALSE;
00214 }

void F_Uart0StringTx ( INT8 *  pString  ) 

Definition at line 224 of file uart0.c.

00224                                    {
00225     while(*pString!=0) F_Uart0CharTx(*pString++);
00226 }

void F_Uart0Svc ( void   ) 

Definition at line 294 of file uart0.c.

00294                      {
00295     INT8U Data;
00296 
00297     if(Uart0Ctrl.UartTxTransmit==1) return;
00298     if(F_Uart0TxBufferCheck()==UART0_BUFFER_EMPTY) return;;
00299     Data=F_Uart0TxBufferGet();
00300     Uart0Ctrl.UartTxTransmit=1;
00301     SERIAL_WRITE_CHAR(Data);
00302 }

void F_Uart0Svc2 ( void   ) 

Definition at line 278 of file uart0.c.

00278                       {
00279     INT8U Data;
00280     INT32U Status;
00281 
00282     if(SERIAL_READ_READY()){
00283         Data=SERIAL_READ_CHAR();
00284         Status=SERIAL_READ_STATUS();
00285         F_Uart0RxBufferPut(Data);
00286     }
00287     if(F_Uart0TxBufferCheck()!=UART0_BUFFER_EMPTY){
00288         if(SERIAL_WRITE_READY()==0) return;
00289         Data=F_Uart0TxBufferGet();
00290         SERIAL_WRITE_CHAR(Data);
00291     }
00292 }

INT8U F_Uart0TxBufferCheck ( void   ) 

Definition at line 127 of file uart0.c.

00127                                 {
00128     if(Uart0Ctrl.TxBuffer.Put!=Uart0Ctrl.TxBuffer.Get){
00129         if(Uart0Ctrl.TxBuffer.Put==(UART0_MAX_BUFFER_SIZE-1)){
00130             if(Uart0Ctrl.TxBuffer.Get==0) return UART0_BUFFER_FULL;
00131             else return UART0_BUFFER_NOT_EMPTY;
00132         }
00133         else{
00134             if((Uart0Ctrl.TxBuffer.Put+1)==Uart0Ctrl.TxBuffer.Get) return UART0_BUFFER_FULL;
00135             else return UART0_BUFFER_NOT_EMPTY;
00136         }
00137     }
00138     else return UART0_BUFFER_EMPTY;
00139 }

INT8U F_Uart0TxBufferCheckIsr ( void   ) 

Definition at line 114 of file uart0.c.

00114                                    {
00115     if(Uart0Ctrl.TxBuffer.Put!=Uart0Ctrl.TxBuffer.Get){
00116         if(Uart0Ctrl.TxBuffer.Put==(UART0_MAX_BUFFER_SIZE-1)){
00117             if(Uart0Ctrl.TxBuffer.Get==0) return UART0_BUFFER_FULL;
00118             else return UART0_BUFFER_NOT_EMPTY;
00119         }
00120         else{
00121             if((Uart0Ctrl.TxBuffer.Put+1)==Uart0Ctrl.TxBuffer.Get) return UART0_BUFFER_FULL;
00122             else return UART0_BUFFER_NOT_EMPTY;
00123         }
00124     }
00125     else return UART0_BUFFER_EMPTY;
00126 }

INT8U F_Uart0TxBufferGet ( void   ) 

Definition at line 151 of file uart0.c.

00151                               {
00152     INT8U Data;
00153 
00154     if(F_Uart0TxBufferCheck()==UART0_BUFFER_EMPTY) return 0; 
00155     if(Uart0Ctrl.TxBuffer.Get==(UART0_MAX_BUFFER_SIZE-1)){
00156         Data=Uart0Ctrl.TxBuffer.Data[Uart0Ctrl.TxBuffer.Get];
00157         Uart0Ctrl.TxBuffer.Get=0;
00158     }
00159     else{
00160         Data=Uart0Ctrl.TxBuffer.Data[Uart0Ctrl.TxBuffer.Get];
00161         Uart0Ctrl.TxBuffer.Get++;
00162     }
00163     return Data;
00164 }

INT8U F_Uart0TxBufferGetIsr ( void   ) 

Definition at line 165 of file uart0.c.

00165                                  {
00166     INT8U Data;
00167 
00168     if(F_Uart0TxBufferCheckIsr()==UART0_BUFFER_EMPTY) return 0; 
00169     if(Uart0Ctrl.TxBuffer.Get==(UART0_MAX_BUFFER_SIZE-1)){
00170         Data=Uart0Ctrl.TxBuffer.Data[Uart0Ctrl.TxBuffer.Get];
00171         Uart0Ctrl.TxBuffer.Get=0;
00172     }
00173     else{
00174         Data=Uart0Ctrl.TxBuffer.Data[Uart0Ctrl.TxBuffer.Get];
00175         Uart0Ctrl.TxBuffer.Get++;
00176     }
00177     return Data;
00178 }

void F_Uart0TxBufferPut ( INT8U  Data  ) 

Definition at line 140 of file uart0.c.

00140                                    {
00141     if(F_Uart0TxBufferCheck()==UART0_BUFFER_FULL) return; 
00142     if(Uart0Ctrl.TxBuffer.Put==(UART0_MAX_BUFFER_SIZE-1)){
00143         Uart0Ctrl.TxBuffer.Data[Uart0Ctrl.TxBuffer.Put]=Data;
00144         Uart0Ctrl.TxBuffer.Put=0;
00145     }
00146     else{
00147         Uart0Ctrl.TxBuffer.Data[Uart0Ctrl.TxBuffer.Put]=Data;
00148         Uart0Ctrl.TxBuffer.Put++;
00149     }
00150 }

INT8 getc ( void   ) 

Definition at line 238 of file uart0.c.

00238                {
00239     INT8 key;
00240 
00241     while(1){
00242         key=getkey();
00243         if(key!=0) return key;
00244         F_Uart0Svc();     // receive uart data using polling mode
00245     }
00246 }

INT8 getch ( void   ) 

Definition at line 257 of file uart0.c.

00257                 {
00258     INT8 key;
00259 
00260     while(1){
00261         key=getkey();
00262         if(key!=0) return key;
00263         F_Uart0Svc();     // receive uart data using polling mode
00264     }
00265 }

INT8 getkey ( void   ) 

Definition at line 232 of file uart0.c.

00232                  {
00233     INT8 Data;
00234 
00235     Data=F_Uart0CharRx(); // Data==0...key not exist
00236     return Data;
00237 }

INT8 kbhit ( void   ) 

Definition at line 228 of file uart0.c.

00228                 {
00229     if(F_Uart0RxCheck()==TRUE) return 1;
00230     else return 0;
00231 }

void putc ( INT8  Data  ) 

Definition at line 247 of file uart0.c.

00247                     {
00248     F_Uart0CharTx(Data);
00249 }

char putch ( INT8  Data  ) 

Definition at line 250 of file uart0.c.

00250                      {
00251     F_Uart0CharTx(Data);
00252     return Data;
00253 }

void puts ( INT8 *  pString  ) 

Definition at line 254 of file uart0.c.

00254                         {
00255     F_Uart0StringTx(pString);
00256 }

INT32 strlen ( const char *  String  ) 

Definition at line 266 of file uart0.c.

00266                                 {
00267     INT32U Length;
00268 
00269     Length=0;
00270     for(;*String!=0;String++) Length++;
00271     return Length;
00272 }


Generated on Tue Sep 2 08:45:41 2008 for A Simple operation System using S3C2410 by  doxygen 1.5.6