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

📄 串口中断接收和回送2.txt

📁 这是一个LPC2214MCU的一个串口中断方式接收和发送程序
💻 TXT
字号:
//在串口接收时,不是想往接收堆栈中放几个字节数据就可以放的,而是看你
//设置的触发点为几个字节。这两处要对应,不然接收会出错。

#include "config.h"
#define UART_BPS   9600//定义波特率的值

uint8 rcv_buf[8];//接收缓冲区
volatile uint8 rcv_new;//接收新数据标志

void __irq IRQ_UART(void)
{
 uint8 i;
 if(0x04==(U0IIR&0x0F))rcv_new=1;//设置接收到新数据标志
 for(i=0;i<8;i++)
 {rcv_buf[i]=U0RBR;//读取FIFO的数据,并清除中断标志
 }
 VICVectAddr=0x00;//中断处理结束
 }
 
 void SendByte(uint8 data)
 {U0THR=data;//回发送接收到的数据
 }
 
 void ISendBuf(void)
 {uint8 i;
 for(i=0;i<8;i++) SendByte(rcv_buf[i]);
 while((U0LSR&0x20)==0);//等待数据发送
 }

void UART_INI(void)//串口初始化
{uint16 Fdiv;
 U0FCR=0x81; //使能FIFO,并设置触发点为8字节
 U0LCR=0x83;//线控制寄存器,决定发送和接收数据的格式,DLAB为1
 U0IER=0x01;//使能接收中断
 Fdiv=(Fpclk/16)/UART_BPS;
 U0DLM=Fdiv/256;
 U0DLL=Fdiv%256;
 U0LCR=0x03; 

 }


int main(void)
{
 PINSEL0=0x00000005;
 rcv_new=0;
 UART_INI();
 
 VICIntSelect=0x00000000;//中断设置
 VICVectCntl0=0x26;
 VICVectAddr0=(uint32)IRQ_UART;
 VICIntEnable=0x00000040;
 
 while(1)
 {if(1==rcv_new)
   {rcv_new=0;
    ISendBuf();
    }
  } 
 return(0);
 }

⌨️ 快捷键说明

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