嵌入式UART0U通信程序
答案:3 悬赏:60 手机版
解决时间 2021-01-30 04:00
- 提问者网友:姑娘长的好罪过
- 2021-01-29 07:13
嵌入式UART0U通信程序
最佳答案
- 五星知识达人网友:洎扰庸人
- 2021-01-29 07:30
#include "config.h"
#define LED1CON 0x00000400
#define FPCLK 2764800L
typedef struct UartMode
{ uint8 datab; //字长度,5/6/7/8
uint8 stopb; //停止位,1/2
uint8 parity; //奇偶校验位,0为无校验,1为奇数校验,2位偶数校验
} UARTMODE;
uint8 rcv_buf[8]; //UART0数据接收缓冲区
uint8 rcv_new; //接收新数据标志
void __irq IRQ_UART0(void)
{ uint32 i;
i=IOSET; //读取当前LED控制值
if((i&LED1CON)==0) //控制LED输出
{ IOSET=LED1CON;
}
else
{ IOCLR=LED1CON;
}
if(0x04==(U0IIR&0x0F))rcv_new=1; //设置接收到新的数据标志
for(i=0;i<7;i++)
{ rcv_buf[i]=U0RBR; //读取FIFO的数据,并清除中断标志
}
VICVectAddr=0x00; //中断处理结束
}
void SendByte(uint8 data)
{ U0THR=data;
while((U0LSR&0x20)==0); //等待数据发送
}
void ISendBuf(void)
{ uint8 i;
for(i=0;i<7;i++)SendByte(rcv_buf[i]);
while((U0LSR&0x20)==0); //等待数据发送
}
uint8 UART0_Ini(uint32 baud,UARTMODE set)
{ uint32 bak;
if((0==baud)||(baud>115200))return(0);
if((set.datab<5)||(set.datab>8))return(0);
if((0==set.stopb)||(set.stopb>2))return(0);
if(set.parity>4)return(0);
U0LCR=0x80; //DLAB位置1
bak=(FPCLK>>4)/baud;
U0DLM=bak>>8;
U0DLL=bak&0xff;
bak=set.datab-5; //设置字长度
if(2==set.stopb)bak|=0x04; //判断是否为2位停止位
if(0!=set.parity){set.parity=set.parity-1;bak|=0x08;}
bak|=set.parity<<4; //设置奇偶校验
U0LCR=bak;
return(1);
}
int main(void)
{ UARTMODE uart0_set;
PINSEL0=0x00000005; //设置I/O连接到UART0
PINSEL1=0x00000000;
IODIR=LED1CON; //设置LED控制口为输出,其它I/O为输入
rcv_new=0;
uart0_set.datab=8; //8位数据位
uart0_set.stopb=1; //1位停止位
uart0_set.parity=0; //无奇偶校验位
UART0_Ini(9600,uart0_set); //初始化串口模式,波特率9600
U0FCR=0x81; //使能FIFO,并设置触发点为8字节
U0IER=0x01; //允许RBR中断,即接收中断
VICIntSelect=0x00000000; //设置所有通道为IRQ中断
VICVectCntl0=0x26; //UART0中断通道分配到IRQ Slot0,即优先级最高
VICVectAddr0=(int)IRQ_UART0; //设置UART0向量地址
VICIntEnable=0x00000040; //使能UART0中断
while(1) //等待中断
{
if(1==rcv_new)
{
ISendBuf(); //将接收到的数据发送回主机
rcv_new=0;
}
}
return(0);
}
符合你的所需的要求吧。
全部回答
- 1楼网友:青灯有味
- 2021-01-29 07:54
哥哥 怎么和我的题目一样呢~~
- 2楼网友:鸠书
- 2021-01-29 07:37
刚好我也需要,谢咯
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯