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

📄 lpc21xx_uart0.c

📁 LPC211X ARM单片机串行通信时源码
💻 C
字号:
//LPC2119(ARM7 MCU) 的UART0操作


/****************************************************************************
* 名称:IRQ_UART0()
* 功能:串口UART0接收中断。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void   __irq IRQ_UART0(void)
{ 
	uint8  receive;
   	uint8  state;
       
   	state=U0IIR&0x0F;
   
   	if( 0x04==state ) //接收中断
    {
      	receive=U0RBR;
      	//添加用户接收数据代码
    } 
  	else if(0x02==state) //发送中断
    {	
		//添加用户代码
    }
         
   
   	VICVectAddr = 0x00;              	// 中断处理结束
} 

/****************************************************************************
* 名称:UART0_Ini()
* 功能:初始化串口0。设置为8位数据位,1位停止位,无奇偶校验,波特率为115200
* 入口参数:无
* 出口参数:无
****************************************************************************/
void UART0_INIT(uint32 UART_BPS,uint8 databyte,uint8 stopbyte,uint8 parity)
{
 	uint16 Fdiv;
	uint32 temp;
 
 	PINSEL0 |= 0x00000005;

 	/* 设置串口波特率 UART_BPS=9600 */
 	U0LCR = 0x83;		                  // DLAB = 1,可设置波特率
 	Fdiv = (Fpclk / 16) / UART_BPS;      // 设置波特率
 	U0DLM = Fdiv / 256;							
 	U0DLL = Fdiv % 256;						
 
 	/* 设置串口模式接收模式 */
 	temp = databyte-5;                   // 设置字长度
 	if(2==stopbyte) temp |= 0x04;        // 判断是否为2位停止位  
   
 	if(0!=parity) {parity = parity-1; temp |= 0x08;}
 	temp |= parity<<4;              	  // 设置奇偶校验
 	U0LCR = temp;
 
	U0FCR = 0x01;                        // 使能FIFO,并设置触发点为1字节
 	U0IER = 0x03;                        // 允许RBR中断,即接收中断 发送中断
 
 	/* 设置中断允许 */
 	VICIntSelect = 0x00000000;           // 设置所有通道为IRQ中断
 	VICVectCntl2 = 0x26;                 // UART0中断通道分配到IRQ slot 0,即优先级最高
 	VICVectAddr2 = (int)IRQ_UART0;       // 设置UART0向量地址
 	VICIntEnable = 0x00000040;           // 使能UART0中断
 
 	//---- 
	UART0_SendByte(0x55);//发送数值
}

/****************************************************************************
* 名称:UART0_SendByte()
* 功能:向串口发送字节数据,并等待发送完毕。 
* 入口参数:data		要发送的数据
* 出口参数:无
****************************************************************************/
void  UART0_SendByte(uint8 data)
{  U0THR = data;				    // 发送数据

   while( (U0LSR&0x40)==0 );	    // 等待数据发送完毕
}

⌨️ 快捷键说明

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