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

📄 uart.cpp

📁 混泰CH7023,CH7024,CH7025视频解码芯片
💻 CPP
字号:
#include "precomp.h"
#include "uart.h"

#define PCLK		101250000   //(FCLK=101.25MHz)
#define BAUDRATE	115200

volatile S3C2410_IOPreg* UART::s2410IOP = (volatile S3C2410_IOPreg*)S3C2410_IOP_VA_BASE;
volatile S3C2410_UART0reg* UART::s2410UART = (volatile S3C2410_UART0reg*)S3C2410_UART0_VA_BASE;

void UART::Initialize()
{
	// (GPH3,GPH2)
	s2410IOP->rGPHUP |= (0x03<<2);
	s2410IOP->rGPHCON = (s2410IOP->rGPHCON & (~0x000000F0)) | (0x000000A0);	
	
	// mode setting...
	s2410UART->rULCON = 0x03;	//  forbid IRDA,no Parity, 1-stop-bit,8-bit dat
	s2410UART->rUCON = 0x245;	//  |0 1 0 0 1 0 0 0 1 0 1|interrupt or polling method
	s2410UART->rUFCON = 0x00;   // FIFO disabled
	s2410UART->rUMCON = 0x00;	//disable AFC

	// baudrate
	s2410UART->rUBRDIV=(int)(PCLK/16.0/BAUDRATE + 0.5) -1; 
	
   	for(int i=0;i<100;i++)
		;
}

void UART::SendByte(UCHAR const data)
{
	while(!(s2410UART->rUTRSTAT&0x02));
	for(int i=0;i<10;i++)
		;
	s2410UART->rUTXH=data;
}

void UART::SendString(UCHAR* const str)
{
	UCHAR* temp=str;
	while((*temp)!='\0')
	{
		if(*temp=='\n')
			SendByte('\r');
		SendByte(*(temp++));
	}
}

UCHAR UART::GetKey()
{
	while(!(s2410UART->rUTRSTAT&0x01));
	for(int i=0;i<10;i++);
	return (s2410UART->rURXH);
}

UCHAR UART::TryGetKey()
{
	UCHAR ch;
	if(!(s2410UART->rUTRSTAT&0x01))
	{
		ch=UART_NO_INPUT;
	}
	else
	{
		ch=s2410UART->rURXH;
	}

	return ch;
}

UINT UART::Test()
{
	UCHAR Tstr1[]="Please press a key for the test...\r\n";
	UCHAR Tstr2[]="Test success!\r\n";
	UCHAR Tstr3[]="do iic test again------read 0x00 and 0x05\r\n";
	UCHAR Tstr4[]="iic test again over\r\n";

	UCHAR div;
	//test UART function
	SendString(&Tstr1[0]);
	GetKey();
	SendString(&Tstr2[0]);
	
	div=s2410UART->rUBRDIV;
	SendByte(div);

	return 0;
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -