微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 最简单的S3c2440UART功能测试

最简单的S3c2440UART功能测试

时间:11-20 来源:互联网 点击:

  1. /*******************************************
  2. *文件名称:UART.c
  3. *实现功能:最基本的UART发送与接收
  4. *作者:无jianqi
  5. *版本:1.0
  6. **********************************************/
  7. #include"2440addr.h"//包含2440相关寄存器的设置
  8. #include"def.h"
  9. //四个LED对应GPB5.6.7.8。
  10. #defineLED15
  11. #defineLED26
  12. #defineLED37
  13. #defineLED48
  14. #defineBAUD115200//波特率
  15. #defineBit(x)(1
  16. #defineOutput(x)(1<2*x)//将对应IO置为输出
  17. #defineLED_On(x)rGPBDAT=~Bit(x)//点亮相应LED
  18. /*******************************************
  19. *名称:Clk_Set
  20. *功能:关于系统时钟的初始化
  21. *入口参数:无
  22. *出口参数:无
  23. **********************************************/
  24. voidClk_Set(void)
  25. {
  26. intcount;
  27. rUPLLCON=(56<12)|(2<4)|2;//UCLK为48MHZ
  28. for(count=0;count<10;count++)
  29. {
  30. ;
  31. }
  32. rMPLLCON=(92<12)|(1<4)|1;//FCLK为400MHZ
  33. rCLKdivN=(0<3)|(2<1)|1;//HCLK位100MHZ,PCLK为50MHZ
  34. rCAMdivN=(0<9);//PCLK=HCLK/4
  35. }
  36. /*******************************************
  37. *名称:IO_init
  38. *功能:关于LED的端口初始化
  39. *入口参数:无
  40. *出口参数:无
  41. **********************************************/
  42. voidIO_init(void)
  43. {
  44. rGPBCON=Output(LED1)|Output(LED2)|Output(LED3)|Output(LED4);//LED的IO口置为输出
  45. rGPBDAT=0xffff;//LED全部熄灭
  46. }
  47. /*******************************************
  48. *名称:UART0_init
  49. *功能:UART0相关的初始化工作
  50. *入口参数:无
  51. *出口参数:无
  52. **********************************************/
  53. voidUART0_init(void)
  54. {
  55. rGPHCON=0xa0;//IO口使能UART0功能
  56. rGPHUP=0xff;//上拉禁止
  57. rULCON0=0x03;//8位数据,无校验,1位停止位
  58. rUCON0=0x05;//pclk时钟,中断请求方式为Tx-电平,Rx-脉冲
  59. rUBRdiv0=26;//设置波特率
  60. rUFCON0=0x00;//不使用FIFO
  61. rUMCON0=0x00;//不使用流控
  62. }
  63. /*******************************************
  64. *名称:Send_Byte
  65. *功能:发送一个字符
  66. *入口参数:等待发送的字符
  67. *出口参数:无
  68. **********************************************/
  69. voidSend_Byte(chardata)
  70. {
  71. while(!(rUTRSTAT0&0x2));//等待发送缓冲器空
  72. rUTXH0=data;
  73. }
  74. /*******************************************
  75. *名称:Send_String
  76. *功能:发送字符串
  77. *入口参数:等待发送的字符串
  78. *出口参数:无
  79. **********************************************/
  80. voidSend_String(char*pt)
  81. {
  82. while(*pt)
  83. {
  84. Send_Byte(*pt++);
  85. }
  86. }
  87. /*******************************************
  88. *名称:Uart_Getch
  89. *功能:接收一个字符
  90. *入口参数:无
  91. *出口参数:接收的字符
  92. **********************************************/
  93. charUart_Getch(void)
  94. {
  95. while(!(rUTRSTAT0&0x1));//等待接收缓冲器有数据
  96. return(rURXH0);//读出数据
  97. }
  98. /*******************************************
  99. *名称:Main
  100. *功能:测试UART发送和接收函数
  101. *入口参数:无
  102. *出口参数:无
  103. **********************************************/
  104. voidMain(void)
  105. {
  106. chartemp;
  107. IO_init();
  108. UART0_init();
  109. Clk_Set();
  110. Send_String("HelloWorld");//发送字符串
  111. while(1)
  112. {
  113. temp=Uart_Getch();//接收到字符
  114. if(temp==0x01)
  115. {
  116. LED_On(LED1);
  117. }
  118. }
  119. }


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top