📄 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 + -