×
单片机 > 单片机程序设计 > 详情

s3c2440串口调试函数

发布时间:2020-08-26 发布时间:
|

 

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

关键字:s3c2440  串口调试函数 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
51单片机中断源的扩展方法