您的位置 首页 技术

最简略的S3c2440UART功用测验

/********************************************文件名称:UART.c*实现功能:最基本的UART发送与接收*作者:无jianqi*版本:1.0*******

  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. }

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部