最簡(jiǎn)單的S3c2440UART功能測試
本文引用地址:http://dyxdggzs.com/article/201611/318932.htm
- /*******************************************
- *文件名稱(chēng):UART.c
- *實(shí)現功能:最基本的UART發(fā)送與接收
- *作者:無(wú)jianqi
- *版本:1.0
- **********************************************/
- #include"2440addr.h"http://包含2440相關(guān)寄存器的設置
- #include"def.h"
- //四個(gè)LED對應GPB5.6.7.8。
- #defineLED15
- #defineLED26
- #defineLED37
- #defineLED48
- #defineBAUD115200//波特率
- #defineBit(x)(1<
- #defineOutput(x)(1<<2*x)//將對應IO置為輸出
- #defineLED_On(x)rGPBDAT=~Bit(x)//點(diǎn)亮相應LED
- /*******************************************
- *名稱(chēng):Clk_Set
- *功能:關(guān)于系統時(shí)鐘的初始化
- *入口參數:無(wú)
- *出口參數:無(wú)
- **********************************************/
- voidClk_Set(void)
- {
- intcount;
- rUPLLCON=(56<<12)|(2<<4)|2;//UCLK為48MHZ
- for(count=0;count<10;count++)
- {
- ;
- }
- rMPLLCON=(92<<12)|(1<<4)|1;//FCLK為400MHZ
- rCLKDIVN=(0<<3)|(2<<1)|1;//HCLK位100MHZ,PCLK為50MHZ
- rCAMDIVN=(0<<9);//PCLK=HCLK/4
- }
- /*******************************************
- *名稱(chēng):IO_init
- *功能:關(guān)于LED的端口初始化
- *入口參數:無(wú)
- *出口參數:無(wú)
- **********************************************/
- voidIO_init(void)
- {
- rGPBCON=Output(LED1)|Output(LED2)|Output(LED3)|Output(LED4);//LED的IO口置為輸出
- rGPBDAT=0xffff;//LED全部熄滅
- }
- /*******************************************
- *名稱(chēng):UART0_init
- *功能:UART0相關(guān)的初始化工作
- *入口參數:無(wú)
- *出口參數:無(wú)
- **********************************************/
- voidUART0_init(void)
- {
- rGPHCON=0xa0;//IO口使能UART0功能
- rGPHUP=0xff;//上拉禁止
- rULCON0=0x03;//8位數據,無(wú)校驗,1位停止位
- rUCON0=0x05;//pclk時(shí)鐘,中斷請求方式為T(mén)x-電平,Rx-脈沖
- rUBRDIV0=26;//設置波特率
- rUFCON0=0x00;//不使用FIFO
- rUMCON0=0x00;//不使用流控
- }
- /*******************************************
- *名稱(chēng):Send_Byte
- *功能:發(fā)送一個(gè)字符
- *入口參數:等待發(fā)送的字符
- *出口參數:無(wú)
- **********************************************/
- voidSend_Byte(chardata)
- {
- while(!(rUTRSTAT0&0x2));//等待發(fā)送緩沖器空
- rUTXH0=data;
- }
- /*******************************************
- *名稱(chēng):Send_String
- *功能:發(fā)送字符串
- *入口參數:等待發(fā)送的字符串
- *出口參數:無(wú)
- **********************************************/
- voidSend_String(char*pt)
- {
- while(*pt)
- {
- Send_Byte(*pt++);
- }
- }
- /*******************************************
- *名稱(chēng):Uart_Getch
- *功能:接收一個(gè)字符
- *入口參數:無(wú)
- *出口參數:接收的字符
- **********************************************/
- charUart_Getch(void)
- {
- while(!(rUTRSTAT0&0x1));//等待接收緩沖器有數據
- return(rURXH0);//讀出數據
- }
- /*******************************************
- *名稱(chēng):Main
- *功能:測試UART發(fā)送和接收函數
- *入口參數:無(wú)
- *出口參數:無(wú)
- **********************************************/
- voidMain(void)
- {
- chartemp;
- IO_init();
- UART0_init();
- Clk_Set();
- Send_String("HelloWorld");//發(fā)送字符串
- while(1)
- {
- temp=Uart_Getch();//接收到字符
- if(temp==0x01)
- {
- LED_On(LED1);
- }
- }
- }
評論