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