📄 uart0.c
字号:
/****************************************Copyright (c)**************************************************
** 广州周立功单片机发展有限公司
** 研 究 所
** 产品一部
**
** http://www.zlgmcu.com
**
**--------------文件信息--------------------------------------------------------------------------------
**文 件 名: uart0.c
**创 建 人: 陈明计
**最后修改日期: 2003年7月4日
**描 述: μCOS-II下LPC210x的UART0底层驱动
**
**--------------历史版本信息----------------------------------------------------------------------------
** 创建人: 陈明计
** 版 本: v1.0
** 日 期: 2003年7月4日
** 描 述: 原始版本
**
**------------------------------------------------------------------------------------------------------
** 修改人: 陈明计
** 版 本: v1.1
** 日 期: 2003年7月21日
** 描 述: 根据正式文档更改寄存器名
**
**--------------当前版本修订------------------------------------------------------------------------------
** 修改人:
** 日 期:
** 描 述:
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#define IN_UART0
#include "config.h"
/*********************************************************************************************************
** 函数名称: UART0Init
** 功能描述: 初始化UART0
** 输 入: bps:波特率
**
** 输 出:TRUE :成功
** FALSE:失败
** 全局变量: Uart0Sem
** 调用模块: QueueCreate,OSSemCreate
**
** 作 者: 陈明计
** 日 期: 2003年7月4日
**-------------------------------------------------------------------------------------------------------
** 修改人: 陈明计
** 日 期: 2003年7月8日
**-------------------------------------------------------------------------------------------------------
** 修改人: 陈明计
** 日 期: 2003年7月21日
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void UART0Init(void)
{
uint16 Fdiv;
PCONP |= 1 << 3; // 打开UART0
PINSEL0 &= ~((0x03 << 4) + (0x03 << 6)); // 设置I/O连接到UART0
PINSEL0 |= ((0x01 << 4) + (0x01 << 6));
U0LCR = 0x83; // DLAB=1,允许设置波特率
Fdiv = (Fpclk / 16) / 115200; // 设置波特率
U0DLM = Fdiv / 256;
U0DLL = Fdiv % 256;
U0LCR = 0x03;
U0IER = 0x05; /* 允许接收和线状态中断 */
U0FCR = 0x87; /* 初始化FIFO */
}
/******************************************************************************************************
**函数名称:UART0_SendStr()
**函数功能:向串口发送数据
**入口参数: s: 指向要发送的数据数组的指针
**出口参数:无
*******************************************************************************************************/
void UART0_SendStr(const char *s)
{
while(*s) //发送字符,直到遇到结束符0
{
U0THR=*s++;
while((U0LSR&0x40)==0); //等待数据发送完毕
}
}
/******************************************************************************************************
**函数名称:UART0_SendByte()
**函数功能:向串口发送一个字节数据
**入口参数: data 要发送的数据
**出口参数:无
*******************************************************************************************************/
void UART0_SendByte(uint8 data)
{
U0THR = data;
while((U0LSR&0x40)==0); //等待数据发送完毕
}
/******************************************************************************************************
**函数名称:UART0_GetCh()
**函数功能:从串口接收一个字节数据
**入口参数:None
**出口参数:None
**返回 :读取到的字节数据
*******************************************************************************************************/
uint8 UART0_GetCh (void)
{
while (!(U0LSR & 0x01)) {
OSTimeDly(1);
}
return U0RBR;
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -