歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> S3C2440 Uart (miniARM 2440 )

S3C2440 Uart (miniARM 2440 )

日期:2017/3/1 10:35:41   编辑:Linux編程
  1. #ifndef UART_H
  2. #define UART_H
  3. #include "2440addr.h"
  4. void UartInit(u32 baud);
  5. void UartSendChar(u8 c);
  6. void UartSendStr(char *str);
  7. char UartGetChar(void);
  8. void UartPrintf(char *fmt,...);
  9. #endif

uart.c

[cpp]

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