S3C2440 Uart (miniARM 2440 )


  1. #ifndef UART_H   
  2. #define UART_H   
  3.   
  4. #include "2440addr.h"   
  5.   
  6. void UartInit(u32 baud);  
  7. void UartSendChar(u8 c);  
  8. void UartSendStr(char *str);  
  9. char UartGetChar(void);  
  10. void UartPrintf(char *fmt,...);  
  11.    
  12. #endif  

uart.c 

[cpp]

  1. #include "uart.h"   
  2.   
  3. void UartInit(u32 baud)  
  4. {  
  5.     rUBRDIV0 = (int)(PCLK/baud/16.0)-1;  
  6. // rULCON0:   
  7. //bit7   Reserved   
  8. //bit6   Infrared Mode    
  9. //       0 = Normal    
  10. //       1 = Infrared   
  11. //bit5:3 Parity Mode   
  12. //       0xx = No Parity   
  13. //       100 = ODD Parity   
  14. //       101 = EVEN Parity   
  15. //       110 = Parity Forced / Checked as 1   
  16. //       111 = Parity Forced / Checked as 0   
  17. //bit2   number Of Stop bit   
  18. //       0 = one stop bit per frame   
  19. //       1 = two stop bit per frame   
  20. //bit1:0 Word Length   
  21. //       00 = 5bits  01 = 6bits   
  22. //       10 = 7bits  11 = 8bits   
  23.     rULCON0  = 0x03;  
  24.     rUCON0   = 0x245;     
  25. }  
  26. void UartSendChar(u8 c)  
  27. {  
  28.     while(! (rUTRSTAT0 &0x02));  
  29.     rUTXH0 = c;  
  30.   
  31. }  
  32. void UartSendStr(char *str)  
  33. {  
  34.     while(*str !='/0')  
  35.         UartSendChar(*str++);  
  36. }  
  37. char UartGetChar(void)  
  38. {  
  39.     while(!(rUTRSTAT0 & 0x01));  
  40.         return rURXH0;  
  41.           
  42. }  
  43. void UartPrintf(char *fmt,...)  
  44. {  
  45.     va_list ap;  
  46.     char string[256];  
  47.   
  48.     va_start(ap,fmt);  
  49.     vsprintf(string,fmt,ap);  
  50.     UartSendStr(string);  
  51.     va_end(ap);  
  52. }  

相关内容