⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serial.c

📁 一个小型的嵌入式操作系统内核,可用于多种硬件平台
💻 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 + -