📄 uart.c.svn-base
字号:
/*#include "loader.h"*/
#include "board.h"
#include "uart.h"
void put_cc( char c )
{
if(c=='\n')
putchar('\r');
/* While !THRE, loop */
while ( 0 == (UART_LSR & 0x20) );
UART_THR = c;
}
void putchar( char c )
{
if(c=='\n')
putchar('\r');
/* While !THRE, loop */
while ( 0 == (UART_LSR & 0x20) );
UART_THR = c;
}
void puts( char *string )
{
int index = 0;
while ( 0 != string[ index ] )
{
putchar( string[ index++ ] );
}
return;
}
void puthex(unsigned long hex)
{
int i;
char c;
for (i=0;i<8;i++)
{
c = hex >> 28;
c += '0';
if (c > '9')
c += ('A' - '9' - 1);
putchar(c);
hex <<= 4;
}
}
int getch( char *ch )
{
if ( 1 == (UART_LSR & 0x01) )
{
return UART_RBR;
}
else
return 0;
}
char poll_cc( void )
{
return (UART_LSR & 0x01 );
}
int getchar( void)
{
while ( 1 != (UART_LSR & 0x01) );
return( UART_RBR );
}
int getcc( void)
{
if ( 1 == (UART_LSR & 0x01) )
return( UART_RBR );
return 0;
}
void initUart(unsigned int baud_rate)
{
unsigned short divisor;
int i;
/* DLAB Set, 8 bit word, no parity, 1 stop bit */
UART_LCR = 0x83;
/* Set Baud Rate to 9600 bps */
divisor = (CLOCKGEN_FREQ / ( 16 * baud_rate )) - 1;
UART_DLM = (divisor >> 8) & 0x00FF;
UART_DLL = divisor & 0x00FF;
/* Clear DLAB Bit */
UART_LCR = 0x03;
UART_FCR = 0x06;
for(i=0;i<1000;i++);
UART_FCR = 0x01;
UART_IER = 0x00;
UART_MCR = 0x03;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -