📄 uart.c
字号:
/****************************************Copyright (c)****************************************************
** Guangzou ZLG-MCU Development Co., LTD.
** graduate school
** http://www.zlgmcu.com
**
**--------------File Info---------------------------------------------------------------------------------
** File name: main.c
** Last modified Date: 2004-09-16
** Last Version: V1.00
** Descriptions: The main() function example template
**
**--------------------------------------------------------------------------------------------------------
** Created by: WangGuoguang
** Created date: 2008-06-06
** Version: V1.00
** Descriptions: LPC2400 串口收发简易驱动,用于GPRS/GPS 界面交互调试.
**
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Descriptions: 加长延时
**
*********************************************************************************************************/
#include "config.h" /* 系统头文件 */
/*********************************************************************************************************
** 函数名称 :uart0Init()
** 函数功能 :串口0初始化
** 入口参数 :uiUartBps ,波特率值.
** 出口参数 :无
*********************************************************************************************************/
void uart0Init (uint32 uiUartBps)
{
uint16 usFdiv = 0;
OS_ENTER_CRITICAL();
PINSEL0 &= (~((0x03 << 4) | (0x03 << 6))); /* 设置P0.2和P0.3连接到UART0 */
PINSEL0 |= ((0x01 << 4) | (0x01 << 6));
PCONP |= 1 << 3; /* 在PCONP里启用UART0 */
U0LCR = 0x83; /* DLAB = 1,可设置波特率 */
usFdiv = (Fpclk / 16) / uiUartBps; /* 设置波特率 */
U0DLM = usFdiv / 256;
U0DLL = usFdiv %256;
U0LCR = 0x03;
OS_EXIT_CRITICAL();
}
/*********************************************************************************************************
** 函数名称 :uart0SendByte
** 函数功能 :以查询方式发送一字节数据
** 入口参数 :ucByte, 要发送的数据
** 出口参数 :无
*********************************************************************************************************/
void uart0SendByte(char ucByte)
{
U0THR = ucByte;
while ((U0LSR & 0x40) == 0) /* 等待数据发送完毕 */
{
OSTimeDly(1);
}
}
/**********************************************************************************************************
** 函数名称 :uart0SendStr
** 函数功能 :向串口0发送一字符串
** 入口参数 :pcStr,要发送的字符串的指针
** 出口参数 :无
**********************************************************************************************************/
void uart0SendStr(char *pcStr)
{
OS_ENTER_CRITICAL();
while (1)
{
if (*pcStr == '\0') {
break; /* 遇到结束符,退出 */
}
uart0SendByte(*pcStr++);
}
OS_EXIT_CRITICAL();
}
/*********************************************************************************************************
** 函数名称 :uart0RcvByte
** 函数功能 :以查询方式接收一字节数据
** 入口参数 :无
** 出口参数 :接收到的字节数据
*********************************************************************************************************/
uint8 uart0RcvByte (void)
{
uint8 ucRcvByte;
while ((U0LSR & 0x01) == 0) { /* 等待数据接收完毕 */
OSTimeDly(10);
}
ucRcvByte = U0RBR;
return (ucRcvByte);
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -