?? uart_handler.c
字號:
#include "hardware_reg.h"
#include "HA_typedef.h"
#include "intc.h"
#include "uart.h"
//********************UART中斷處理子函數******************//
/////////////////////////////UART0//////////////////////////
void RlsIsrUart0(void) //用于返回接收數據狀態中斷的硬件錯誤
{
U32 i;
i = ReadReg(UART0_LSR);
}
void RdaIsrUart0(void) //用來實現讀取接收FIFO中的數據,并把接收的數據打印出來
{
U32 a;
a = ReadReg(UART0_R0FIFO);
WriteReg(UART0_R0FIFO, a);
}
void TmoIsrUart0(void) //用來實現超時中斷
{
U32 a;
a = ReadReg(UART0_R0FIFO);
WriteReg(UART0_R0FIFO, a);
}
void ThrIsrUart0(void) //用來把要發送的數據放入傳輸FIFO
{
U32 i;
i = ReadReg(UART0_IIR);
}
void MdsIsrUart0(void) //用來返回modem狀態發生變化中斷的硬件錯誤
{
U32 i;
i = ReadReg(UART0_MSR);
}
//**********************UART中斷處理主函數******************//
//---------------------------UART0----------------------------
void Uart0IntHandle(void)
{
switch ((ReadReg(UART0_IIR) &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 EntUart0(void) //UART0通道使能
{
MaskIrq(INT_UART0);
Uart0IntHandle();
UnmaskIrq(INT_UART0);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -