s3c2440串口調(diào)試函數(shù)
本文引用地址:http://m.butianyuan.cn/article/201611/318936.htm
- #include"2440addr.h"
- #include
- #include
- #include
- #include
- #include
- #defineTXD0READY(1<<2)
- #defineRXD0READY(1)
- #defineUART_CLK50000000//UART0的時(shí)鐘源設(shè)為PCLK
- #defineUART_BAUD_RATE115200//波特率
- #defineUART_BRD((UART_CLK/(UART_BAUD_RATE*16))-1)
- /*
- *初始化UART0
- *115200,8N1,無流控
- */
- voidUart0_Init(void)
- {
- rGPHCON|=0xa0;//GPH2,GPH3用作TXD0,RXD0
- rGPHUP=0x0c;//GPH2,GPH3內(nèi)部上拉
- rULCON0=0x03;//8N1(8個(gè)數(shù)據(jù)位,無較驗(yàn),1個(gè)停止位)
- rUCON0=0x05;//查詢方式,UART時(shí)鐘源為PCLK
- rUFCON0=0x00;//不使用FIFO
- rUMCON0=0x00;//不使用流控
- rUBRDIV0=UART_BRD;//波特率為115200
- }
- /*
- *發(fā)送一個(gè)字符
- */
- voidSend_Byte(unsignedcharc)
- {
- /*等待,直到發(fā)送緩沖區(qū)中的數(shù)據(jù)已經(jīng)全部發(fā)送出去*/
- while(!(rUTRSTAT0&TXD0READY));
- /*向UTXH0寄存器中寫入數(shù)據(jù),UART即自動(dòng)將它發(fā)送出去*/
- rUTXH0=c;
- }
- /*
- *接收字符
- */
- unsignedcharGet_Byte(void)
- {
- /*等待,直到接收緩沖區(qū)中的有數(shù)據(jù)*/
- while(!(rUTRSTAT0&RXD0READY));
- /*直接讀取URXH0寄存器,即可獲得接收到的數(shù)據(jù)*/
- returnrURXH0;
- }
- /*
- *判斷一個(gè)字符是否數(shù)字
- */
- intisDigit(unsignedcharc)
- {
- if(c>=0&&c<=9)
- return1;
- else
- return0;
- }
- /*
- *判斷一個(gè)字符是否英文字母
- */
- intisLetter(unsignedcharc)
- {
- if(c>=a&&c<=z)
- return1;
- elseif(c>=A&&c<=Z)
- return1;
- else
- return0;
- }
- voidUart0_SendString(char*pt)
- {
- while(*pt)
- {
- Send_Byte(*pt++);
- }
- }
- voidUart_Printf(char*fmt,...)
- {
- va_listap;
- charstring[256];
- va_start(ap,fmt);
- vsprintf(string,fmt,ap);
- Uart0_SendString(string);
- va_end(ap);
- }
評(píng)論