📄 serial.c
字号:
/**************************************************************************************************
EDL RTOS Kernel
(c) Copyright 2005, Wu Jun
All Rights Reserved
For further information, please visit http://www.enjoydigitallife.com
* Description: None
* History:
Date Remarks
2005-01-06 Created initial version
2005-12-12 Finished the version 2.01
**************************************************************************************************/
/**************************************************************************************************
* Description: None
* History:
Date Remarks
2005-01-06 Created initial version
**************************************************************************************************/
#include "44b.h"
#include "datatype.h"
#include "board.h"
#include "serial.h"
/**************************************************************************************************
* description: set baud rate, 1 stop bit, no check
**************************************************************************************************/
void uart0_init(U32 baudRate)
{
rUFCON0=0x0; /* FIFO disable */
rUFCON1=0x0;
rUMCON0=0x0;
rUMCON1=0x0;
/* UART0 */
rULCON0=0x3; /* Normal,No parity,1 stop,8 bit */
rUCON0=0x245; /* rx=edge,tx=level,disable timeout int.,enable rx error int.,normal,interrupt or polling */
rUBRDIV0=( (int)(MCLK/16./baudRate + 0.5) -1 );
/* UART1 */
rULCON1=0x3; /* Normal,No parity,1 stop,8 bit */
rUCON1=0x245;
rUBRDIV1=( (int)(MCLK/16./baudRate + 0.5) -1 );
}
void uart0_sendByte(U8 data)
{
while(!(rUTRSTAT0 & 0x2)); /* Wait until THR is empty. */
WrUTXH0(data);
}
void uart0_sendString(S8 *str)
{
while( *str != 0 )
{
uart0_sendByte( (U8)*str );
str++;
}
}
void uart0_sendWord(U32 data)
{
U8 i;
U32 buf = data;
for( i = 0; i < 4; i++ )
{
uart0_sendByte((U8)(( buf & 0xff000000 ) >> 24 ));
buf <<= 8;
}
}
void uart0_sendASCIIByte(U8 data)
{
U8 i,j,temp;
temp = data;
for( j = 0; j < 2; j++ )
{
i = ( U8 )( ( temp & 0xf0 ) >> 4);
if( i <= 9 ){
uart0_sendByte( i + '0' );
}
else{
uart0_sendByte(i + 'A' - 10);
}
temp <<= 4;
}
}
void uart0_sendASCIIWord(U32 data)
{
U8 i;
U32 buf = data;
for( i = 0; i < 4; i++ )
{
uart0_sendASCIIByte((U8)(( buf & 0xff000000 ) >> 24 ));
buf <<= 8;
}
uart0_sendByte( 0x0d );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -