📄 串口中断接收与回送1.txt
字号:
//在编中断相关程序时,要注意先把startup.s里的IRQ中断使能。
#include "config.h"
typedef struct UartMode
{ uint8 datab;
uint8 stopb;
uint8 parity;
} UARTMODE;
uint8 rcv_buf[8];
volatile uint8 rcv_new;
void __irq IRQ_UART0(void)
{uint8 i;
if(0x04==(U0IIR&0x0F)) rcv_new=1;
for(i=0;i<8;i++)
{rcv_buf[i]=U0RBR;
}
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);
}
uint8 UART0_Ini(uint32 baud,UARTMODE set)
{uint32 bak;
U0LCR=0x80;
bak=(Fpclk/16)/baud;
U0DLM=bak/256;
U0DLL=bak%256;
bak=set.datab-5;
U0LCR=bak;
return(1);
}
int main(void)
{
UARTMODE uart0_set;
PINSEL0=0x00000005;
rcv_new=0;
uart0_set.datab=8;
uart0_set.stopb=1;
uart0_set.parity=0;
UART0_Ini(9600,uart0_set);
U0FCR=0x81;
U0IER=0x01;
VICIntSelect=0x00000000;
VICVectCntl0=0x26;
VICVectAddr0=(int)IRQ_UART0;
VICIntEnable=0x00000040;
while(1)
{if(1==rcv_new)
{rcv_new=0;
ISendBuf();
}
}
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -