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

📄 uartrecv_irq.h

📁 3个串口接收
💻 H
字号:

/*********************************************************************************************************
** 函数名称 :ClrRcvFIFO
** 函数功能 :读空接收FIFO
** 入口参数 :无
** 出口参数 :无
*********************************************************************************************************/
void ClrRcvFIFO(void)
{
	volatile uint32 i, temp = 0;

	for (i = 0; i < 8; i++)	
	{
		if ((U0LSR & 0x01) == 0x01)
		{
			temp = U0RBR;					// 读空接收FIFO
		}
		else
		{
			break;
		}
	}		
}	
/*********************************************************************************************************
** 函数名称 :IRQ_UART0
** 函数功能 :串口0接收中断服务程序
** 入口参数 :无
** 出口参数 :无
*******************************************************************************************************/
void __irq IRQ_UART0Recv(void)
{
	uint32 i   = 0;
	uint32 IIR = 0;

	/* 			UART0接收中断处理 			*/
	while (((IIR = U0IIR) & 0x01) == 0)		// 若尚有中断待处理
	{
		
		switch (IIR & 0x0e)
		{
			/* RDA中断处理入口 */
			case 0x04:					
				U0Rcv_New = 1;				
				for (i = 0; i < 8; i++)	
				{
					U0Rcv_Buf[i] = U0RBR;		// 读空FIFO,清除RDA中断
				}
				U0Snd_N = 8;					// 收到8个数据
				break;
			
			/* CTI中断处理入口 */
			case 0x0c:
				U0Rcv_New = 1;
				for (i = 0; i < 8; i++)	
				{
					if ((U0LSR & 0x01) == 0x01)
					{
						U0Rcv_Buf[i] = U0RBR;	// 读空FIFO,清除CTI中断
					}
					else
					{
						break;
					}
				}
				U0Snd_N 	= i;				// 在CTI中断里保存了i个有效数据
		
			default:
				break;
		}
	}
		
	VICVectAddr = 0x00;						
}

⌨️ 快捷键说明

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