📄 serial.c
字号:
/*******************************************************************************
*File: Serial.c
*功能:使用串口UART0接收上位机发送的数据,发送数据到上位机
*******************************************************************************/
#include "config.h"
uint8 rcv_buf[1]; //UART0数据接收缓冲区
uint8 rcv_new; //接收新数据标志
void IRQ_UART0(void) __attribute__ ((interrupt)); // Generate Interrupt
/*******************************************************************************
*名称: IRQ_UART0(void)
*功能: 串口UART0接收中断
*******************************************************************************/
void IRQ_UART0(void)
{ uint32 i;
if(0x04==(U0IIR&0x0F))rcv_new=1; //设置接收到新的数据标志
for(i=0;i<8;i++)
{ rcv_buf[i]=U0RBR; //读取FIFO的数据,并清除中断标志
}
VICVectAddr=0x00; //中断处理结束
}
/*******************************************************************************
*名称: SendByte()
*功能: 向串口发送字节数据
*入口参数:data 要发送的数据
*******************************************************************************/
void SendByte(uint8 data)
{ U0THR=data;
}
/*******************************************************************************
*名称: ISendBuf()
*功能: 将缓冲区的数据发送回主机,并等待发送完毕
*******************************************************************************/
void ISendBuf(void)
{ SendByte(rcv_buf[0]);
while((U0LSR&0x20)==0); //等待数据发送
}
/*******************************************************************************
*名称: UART0_Ini()
*功能: 初始化串口0. 设置其工作模式及波特率
*入口参数: baud 波特率
set 模式设置 (UARTMODE数据结构)
*出口参数:返回值为1时表示初始化成功,为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);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -