新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 最簡(jiǎn)單的S3c2440UART功能測(cè)試

最簡(jiǎn)單的S3c2440UART功能測(cè)試

作者: 時(shí)間:2016-11-20 來(lái)源:網(wǎng)絡(luò) 收藏

本文引用地址:http://butianyuan.cn/article/201611/318932.htm
  1. /*******************************************
  2. *文件名稱:UART.c
  3. *實(shí)現(xiàn)功能:最基本的UART發(fā)送與接收
  4. *作者:無(wú)jianqi
  5. *版本:1.0
  6. **********************************************/
  7. #include"2440addr.h"http://包含2440相關(guān)寄存器的設(shè)置
  8. #include"def.h"
  9. //四個(gè)LED對(duì)應(yīng)GPB5.6.7.8。
  10. #defineLED15
  11. #defineLED26
  12. #defineLED37
  13. #defineLED48
  14. #defineBAUD115200//波特率
  15. #defineBit(x)(1<
  16. #defineOutput(x)(1<<2*x)//將對(duì)應(yīng)IO置為輸出
  17. #defineLED_On(x)rGPBDAT=~Bit(x)//點(diǎn)亮相應(yīng)LED
  18. /*******************************************
  19. *名稱:Clk_Set
  20. *功能:關(guān)于系統(tǒng)時(shí)鐘的初始化
  21. *入口參數(shù):無(wú)
  22. *出口參數(shù):無(wú)
  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. *功能:關(guān)于LED的端口初始化
  39. *入口參數(shù):無(wú)
  40. *出口參數(shù):無(wú)
  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相關(guān)的初始化工作
  50. *入口參數(shù):無(wú)
  51. *出口參數(shù):無(wú)
  52. **********************************************/
  53. voidUART0_init(void)
  54. {
  55. rGPHCON=0xa0;//IO口使能UART0功能
  56. rGPHUP=0xff;//上拉禁止
  57. rULCON0=0x03;//8位數(shù)據(jù),無(wú)校驗(yàn),1位停止位
  58. rUCON0=0x05;//pclk時(shí)鐘,中斷請(qǐng)求方式為Tx-電平,Rx-脈沖
  59. rUBRDIV0=26;//設(shè)置波特率
  60. rUFCON0=0x00;//不使用FIFO
  61. rUMCON0=0x00;//不使用流控
  62. }
  63. /*******************************************
  64. *名稱:Send_Byte
  65. *功能:發(fā)送一個(gè)字符
  66. *入口參數(shù):等待發(fā)送的字符
  67. *出口參數(shù):無(wú)
  68. **********************************************/
  69. voidSend_Byte(chardata)
  70. {
  71. while(!(rUTRSTAT0&0x2));//等待發(fā)送緩沖器空
  72. rUTXH0=data;
  73. }
  74. /*******************************************
  75. *名稱:Send_String
  76. *功能:發(fā)送字符串
  77. *入口參數(shù):等待發(fā)送的字符串
  78. *出口參數(shù):無(wú)
  79. **********************************************/
  80. voidSend_String(char*pt)
  81. {
  82. while(*pt)
  83. {
  84. Send_Byte(*pt++);
  85. }
  86. }
  87. /*******************************************
  88. *名稱:Uart_Getch
  89. *功能:接收一個(gè)字符
  90. *入口參數(shù):無(wú)
  91. *出口參數(shù):接收的字符
  92. **********************************************/
  93. charUart_Getch(void)
  94. {
  95. while(!(rUTRSTAT0&0x1));//等待接收緩沖器有數(shù)據(jù)
  96. return(rURXH0);//讀出數(shù)據(jù)
  97. }
  98. /*******************************************
  99. *名稱:Main
  100. *功能:測(cè)試UART發(fā)送和接收函數(shù)
  101. *入口參數(shù):無(wú)
  102. *出口參數(shù):無(wú)
  103. **********************************************/
  104. voidMain(void)
  105. {
  106. chartemp;
  107. IO_init();
  108. UART0_init();
  109. Clk_Set();
  110. Send_String("HelloWorld");//發(fā)送字符串
  111. while(1)
  112. {
  113. temp=Uart_Getch();//接收到字符
  114. if(temp==0x01)
  115. {
  116. LED_On(LED1);
  117. }
  118. }
  119. }




關(guān)鍵詞: S3c2440UART功能測(cè)

評(píng)論


技術(shù)專區(qū)

關(guān)閉