📄 uart.c
字号:
#define UART_IN
#include "config.h"
/****************************************************************************
* 名 称:Uart_SendByte()
* 功 能:向串口UART0发送字节数据。
* 入口参数:data 要发送的数据
* 出口参数:无
****************************************************************************/
void Uart_SendByte(uint8 data)
{
U0THR = data; // 发送数据
while((U0LSR&0x40)==0);
}
/****************************************************************************
* 名 称:Uart_GetByte()
* 功 能:向串口UART0接受一个字符
* 入口参数:无
* 出口参数:返回接收到的字符
****************************************************************************/
uint8 Uart_GetByte(void)
{
uint8 indata;
while((U0LSR&0x01)==0);
indata=U0RBR;
return indata;
}
/****************************************************************************
* 名称:Uart_SendStr()
* 功能:将一个字符串发送出去
* 入口参数:Str 字符串首地址
* 出口参数:无
****************************************************************************/
void Uart_SendStr(unsigned char *Str)
{
while(*Str!='\0')
{
Uart_SendByte(*Str);
Str++;
}
}
/****************************************************************************
* 名 称:UART0_Init()
* 功 能:初始化串口0。设置其工作模式及波特率。
* 入口参数:baud 波特率
* set 模式设置(UARTMODE数据结构)
* 出口参数:返回值为1时表示初化成功,为0表除参数出错
****************************************************************************/
uint8 Uart_Init(uint32 baud, UARTMODE set)
{
uint32 bak;
/* 设置串口波特率 */
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; //原代码是这个
//U0LCR = bak&0x7f; //这个是我自己改的
return(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -