?? uart_handler.c
字號:
#include "ub4020evb.h"
#include "sep4020.h"
#include "intc.h"
#include "uart.h"
//********************UART0中斷處理函數******************//
void Uart0IntHandle(void)
{
int a = ReadReg(UART0_IIR);
switch ((a &0X0E) >> 1) //判斷bit【3:1】中斷源標號
{
case 3:
RlsIsrUart0(); //接收數據狀態中斷
return ;
break;
case 2:
RdaIsrUart0(); //接收FIFO中的數據達到觸發級中斷
return ;
break;
case 6:
TmoIsrUart0(); //超時中斷
return ;
break;
case 1:
ThrIsrUart0(); //傳輸FIFO中斷
return ;
break;
case 0:
MdsIsrUart0(); //狀態發生變化中斷
return ;
break;
default:
return ;
}
}
void RlsIsrUart0(void) //用于返回接收數據狀態中斷的硬件錯誤
{
U32 i;
i = ReadReg(UART0_LSR);
}
void RdaIsrUart0(void) //用來實現讀取接收FIFO中的數據,并把接收的數據打印出來
{
U32 i;
U8 a[9];
for(i=0; i<8; i++)
a[i] = read_reg(UART0_RXFIFO); //讀取接收FIFO里的數據
a[8] = '\0';
Prints((char *)a,0x10005000);
return;
}
void TmoIsrUart0(void) //用來實現超時中斷
{
// volatile U8 a[2]={0,0};
U32 i;
volatile U32 a;
// S8 *s;
// s = "timer out now!!\n";
for(i=0; i<8; i++)
a = ReadReg(UART0_RXFIFO);
Prints("timer out now!!\n",0x10005000);
return;
}
void ThrIsrUart0(void) //用來把要發送的數據放入傳輸FIFO
{
U32 i;
i = ReadReg(UART0_IIR);
}
void MdsIsrUart0(void) //用來返回modem狀態發生變化中斷的硬件錯誤
{
U32 i;
i = ReadReg(UART0_MSR);
}
//********************UART1中斷處理函數******************//
void Uart1IntHandle(void)
{
int a = ReadReg(UART1_IIR);
switch ((a &0X0E) >> 1) //判斷bit【3:1】中斷源標號
{
case 3:
RlsIsrUart1(); //接收數據狀態中斷
return ;
break;
case 2:
RdaIsrUart1(); //接收FIFO中的數據達到觸發級中斷
return ;
break;
case 6:
TmoIsrUart1(); //超時中斷
return ;
break;
case 1:
ThrIsrUart1(); //傳輸FIFO中斷
return ;
break;
case 0:
MdsIsrUart1(); //狀態發生變化中斷
return ;
break;
default:
return ;
}
}
void RlsIsrUart1(void) //用于返回接收數據狀態中斷的硬件錯誤
{
U32 i;
i = ReadReg(UART1_LSR);
}
void RdaIsrUart1(void) //用來實現讀取接收FIFO中的數據,并把接收的數據打印出來
{
U32 i;
U8 a[9];
for(i=0; i<8; i++)
a[i] = read_reg(UART1_RXFIFO); //讀取接收FIFO里的數據
a[8] = '\0';
Prints((char *)a,0x10006000);
return;
}
void TmoIsrUart1(void) //用來實現超時中斷
{
U32 i;
volatile U32 a;
for(i=0; i<8; i++)
a = ReadReg(UART1_RXFIFO);
Prints("timer out now!!\n",0x10006000);
return;
}
void ThrIsrUart1(void) //用來把要發送的數據放入傳輸FIFO
{
U32 i;
i = ReadReg(UART1_IIR);
}
void MdsIsrUart1(void) //用來返回modem狀態發生變化中斷的硬件錯誤
{
U32 i;
i = ReadReg(UART1_MSR);
}
//********************UART2中斷處理函數******************//
void Uart2IntHandle(void)
{
int a = ReadReg(UART2_IIR);
switch ((a &0X0E) >> 1) //判斷bit【3:1】中斷源標號
{
case 3:
RlsIsrUart2(); //接收數據狀態中斷
return ;
break;
case 2:
RdaIsrUart2(); //接收FIFO中的數據達到觸發級中斷
return ;
break;
case 6:
TmoIsrUart2(); //超時中斷
return ;
break;
case 1:
ThrIsrUart2(); //傳輸FIFO中斷
return ;
break;
case 0:
MdsIsrUart2(); //狀態發生變化中斷
return ;
break;
default:
return ;
}
}
void RlsIsrUart2(void) //用于返回接收數據狀態中斷的硬件錯誤
{
U32 i;
i = ReadReg(UART2_LSR);
}
void RdaIsrUart2(void) //用來實現讀取接收FIFO中的數據,并把接收的數據打印出來
{
U32 i;
U8 a[9];
for(i=0; i<8; i++)
a[i] = read_reg(UART2_RXFIFO); //讀取接收FIFO里的數據
a[8] = '\0';
Prints((char *)a,0x10007000);
return;
}
void TmoIsrUart2(void) //用來實現超時中斷
{
U32 i;
volatile U32 a;
for(i=0; i<8; i++)
a = ReadReg(UART2_RXFIFO);
Prints("timer out now!!\n",0x10007000);
return;
}
void ThrIsrUart2(void) //用來把要發送的數據放入傳輸FIFO
{
U32 i;
i = ReadReg(UART2_IIR);
}
void MdsIsrUart2(void) //用來返回modem狀態發生變化中斷的硬件錯誤
{
U32 i;
i = ReadReg(UART2_MSR);
}
//********************UART3中斷處理函數******************//
void Uart3IntHandle(void)
{
int a = ReadReg(UART3_IIR);
switch ((a &0X0E) >> 1) //判斷bit【3:1】中斷源標號
{
case 3:
RlsIsrUart3(); //接收數據狀態中斷
return ;
break;
case 2:
RdaIsrUart3(); //接收FIFO中的數據達到觸發級中斷
return ;
break;
case 6:
TmoIsrUart3(); //超時中斷
return ;
break;
case 1:
ThrIsrUart3(); //傳輸FIFO中斷
return ;
break;
case 0:
MdsIsrUart3(); //狀態發生變化中斷
return ;
break;
default:
return ;
}
}
void RlsIsrUart3(void) //用于返回接收數據狀態中斷的硬件錯誤
{
U32 i;
i = ReadReg(UART3_LSR);
}
void RdaIsrUart3(void) //用來實現讀取接收FIFO中的數據,并把接收的數據打印出來
{
U32 i;
U8 a[9];
for(i=0; i<8; i++)
a[i] = read_reg(UART3_RXFIFO); //讀取接收FIFO里的數據
a[8] = '\0';
Prints((char *)a,0x10008000);
return;
}
void TmoIsrUart3(void) //用來實現超時中斷
{
// volatile U8 a[2]={0,0};
U32 i;
volatile U32 a;
// S8 *s;
// s = "timer out now!!\n";
for(i=0; i<8; i++)
a = ReadReg(UART3_RXFIFO);
Prints("timer out now!!\n",0x10008000);
return;
}
void ThrIsrUart3(void) //用來把要發送的數據放入傳輸FIFO
{
U32 i;
i = ReadReg(UART3_IIR);
}
void MdsIsrUart3(void) //用來返回modem狀態發生變化中斷的硬件錯誤
{
U32 i;
i = ReadReg(UART3_MSR);
}
/*
void EntUart0(void) //UART0通道使能
{
mask_irq(INT_UART0);
Uart0IntHandle();
unmask_irq(INT_UART0);
}
*/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -