您的位置 首页 编程

s3c2440串口调试函数

#include2440addr.h#includestdarg.h>#includestring.h>#includestdlib.h>#includestdio.h>#in

  1. #include”2440addr.h”
  2. #include
  3. #include
  4. #include
  5. #include
  6. #include
  7. #defineTXD0READY(1<<2)
  8. #defineRXD0READY(1)
  9. #defineUART_CLK50000000//UART0的时钟源设为PCLK
  10. #defineUART_BAUD_RATE115200//波特率
  11. #defineUART_BRD((UART_CLK/(UART_BAUD_RATE*16))-1)
  12. /*
  13. *初始化UART0
  14. *115200,8N1,无流控
  15. */
  16. voidUart0_Init(void)
  17. {
  18. rGPHCON|=0xa0;//GPH2,GPH3用作TXD0,RXD0
  19. rGPHUP=0x0c;//GPH2,GPH3内部上拉
  20. rULCON0=0x03;//8N1(8个数据位,无较验,1个中止位)
  21. rUCON0=0x05;//查询方法,UART时钟源为PCLK
  22. rUFCON0=0x00;//不运用FIFO
  23. rUMCON0=0x00;//不运用流控
  24. rUBRDIV0=UART_BRD;//波特率为115200
  25. }
  26. /*
  27. *发送一个字符
  28. */
  29. voidSend_Byte(unsignedcharc)
  30. {
  31. /*等候,直到发送缓冲区中的数据现已悉数发送出去*/
  32. while(!(rUTRSTAT0&TXD0READY));
  33. /*向UTXH0寄存器中写入数据,UART即主动将它发送出去*/
  34. rUTXH0=c;
  35. }
  36. /*
  37. *接纳字符
  38. */
  39. unsignedcharGet_Byte(void)
  40. {
  41. /*等候,直到接纳缓冲区中的有数据*/
  42. while(!(rUTRSTAT0&RXD0READY));
  43. /*直接读取URXH0寄存器,即可取得接纳到的数据*/
  44. returnrURXH0;
  45. }
  46. /*
  47. *判别一个字符是否数字
  48. */
  49. intisDigit(unsignedcharc)
  50. {
  51. if(c>=0&&c<=9)
  52. return1;
  53. else
  54. return0;
  55. }
  56. /*
  57. *判别一个字符是否英文字母
  58. */
  59. intisLetter(unsignedcharc)
  60. {
  61. if(c>=a&&c<=z)
  62. return1;
  63. elseif(c>=A&&c<=Z)
  64. return1;
  65. else
  66. return0;
  67. }
  68. voidUart0_SendString(char*pt)
  69. {
  70. while(*pt)
  71. {
  72. Send_Byte(*pt++);
  73. }
  74. }
  75. voidUart_Printf(char*fmt,…)
  76. {
  77. va_listap;
  78. charstring[256];
  79. va_start(ap,fmt);
  80. vsprintf(string,fmt,ap);
  81. Uart0_SendString(string);
  82. va_end(ap);
  83. }

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/biancheng/264428.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部