📄 uart.h
字号:
u8 * ulcon = NULL;
u16 * ucon = NULL;
u8 * ufcon = NULL;
u8 * umcon = NULL;
u8 * utrstat = NULL;
u8 * uerstat = NULL;
u16 * ufstat = NULL;
u8 * umstat = NULL;
u8 * utxh = NULL;
u8 * urxh = NULL;
u16 * ubrdiv = NULL;
//////////////////////////////////////
int SetCurrentUART(int cur)
{
if(cur==0)
{
ulcon = (u8*)&rULCON0;
ucon = (u16*)&rUCON0;
ufcon = (u8*)&rUFCON0;
umcon = (u8*)&rUMCON0;
utrstat = (u8*)&rUTRSTAT0;
uerstat = (u8*)&rUERSTAT0;
ufstat = (u16*)&rUFSTAT0;
umstat = (u8*)&rUMSTAT0;
utxh = (u8*)&rUTXH0;
urxh = (u8*)&rURXH0;
ubrdiv = (u16*)&rUBRDIV0;
}
else if(cur==1)
{
ulcon = (u8*)&rULCON1;
ucon = (u16*)&rUCON1;
ufcon = (u8*)&rUFCON1;
umcon = (u8*)&rUMCON1;
utrstat = (u8*)&rUTRSTAT1;
uerstat = (u8*)&rUERSTAT1;
ufstat = (u16*)&rUFSTAT1;
umstat = (u8*)&rUMSTAT1;
utxh = (u8*)&rUTXH1;
urxh = (u8*)&rURXH1;
ubrdiv = (u16*)&rUBRDIV1;
}
return 0;
}
///////////////////////////////////////
void SetULineCon(u8 b)
{
(*ulcon) = b;
}
////////////////////////////////////////
void SetUCon(u16 h)
{
(*ucon)=h;
}
////////////////////////////////////////
void SetFifoCon(u8 b)
{
(*ufcon)=b;
}
////////////////////////////////////////
void SetModemCon(u8 b)
{
(*umcon)=b;
}
////////////////////////////////////////
u8 GetUTRStat()
{
return *utrstat;
}
///////////////////////////////////////
u8 GetUERStat()
{
return *uerstat;
}
////////////////////////////////////////
u8 GetFifoStat()
{
return *ufstat;
}
////////////////////////////////////////
u8 GetModemStat()
{
return *umstat;
}
////////////////////////////////////////
void SetBaudRate(u32 bps)
{
u16 temp = (u16)(get_PCLK()/(bps*16))-1;
(*ubrdiv)=temp;
}
///////////////////////////////////////
int IsTransmitBufferEmpty()
{
u8 t=GetUTRStat();
if(t&0x02)
return 1;
return 0;
}
///////////////////////////////////////
void WriteChar(char ch)
{
while(1)
{
if(IsTransmitBufferEmpty())
{
(*utxh) = (u8)ch;
break;
}
}
}
///////////////////////////////////////
void WriteString(char *str)
{
int i=0;
int j=0;
while(str[i])
{
WriteChar(str[i]);
i++;
}
}
///////////////////////////////////////
int UART_Printf(char *szFormat, ...)
{
char szBuffer [1024] ;
va_list pArgList ;
va_start (pArgList, szFormat) ;
vsprintf (szBuffer, szFormat, pArgList) ;
va_end (pArgList) ;
WriteString(szBuffer);
return 0;
}
///////////////////////////////////////
void UartInitDefault()
{
SetCurrentUART(0);
SetFifoCon(0x00);
SetModemCon(0x00);
SetULineCon(0x03);
SetUCon(0x245);
SetBaudRate(115200);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -