uart0.c

来自「包括使用ucos任务的一些操作实现了lpc2142上的一些基本功能:按键、流水灯」· C语言 代码 · 共 109 行

C
109
字号
/*************************************************************************************
** Copyright (c) 2007,XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
** http://XXXXXXXXXXXXXXXXX

**文件名称:Timer.C
**功能说明:与定时器相关的函数等
**使用说明:

** 当前版本: 1.0
** 作    者:  XXX
** 完成日期:  2007年xx月xx号

*************************************************************************************/

#include	"lpc214x.h"
#include	"common.h"


/*************************************************************************************
* 函数原型: void Uart0_Ini(INT16U Uart0Bps)
* 功能描述: 以一定的波特率初始化UART0
* 输入参数: Uart0Bps		波特率,如9600,38400
* 输出参数: 
* 返回值  : 
**************************************************************************************/
void Uart0_Ini(INT16U Uart0Bps)
{ 
INT32U Fdiv;

PINSEL0=(PINSEL0&(~(0x0F<<0)))|(0x05<<0);				//选择UART0;

U0LCR=	3		|						// 8位字符长度
		(0<<2)	|						// 1位停止位
		(0<<3)	|						//禁止奇偶校验
		(0<<4)	|						//奇偶选择
		(0<<6)	|						//禁止间隔发送
		(1<<7);							//使能除数设置

//******设置波特率**********************************
Fdiv=Fpclk/(16*Uart0Bps);							  
U0DLM=Fdiv/256;
U0DLL=Fdiv%256;

U0LCR=U0LCR&(~(1<<7));	   				//锁定波特率设置

U0FCR= 	1		|						//使能FIFO
		(1<<1)	|						//复位RxFIFO
		(1<<2)	|						//复位TxFIFO
		(0<<6);							//1字节触发
}


/*************************************************************************************
* 函数原型: INT8U Uart0_GetByte(void)
* 功能描述: 查询方式接受1字节数据
* 输入参数: 
* 输出参数: 
* 返回值  : 接受到的1字节数据
**************************************************************************************/
INT8U Uart0_GetByte(void)
{INT8U  GetData;
 while((U0LSR&0x01)==0);   //就绪后采集数据
  GetData=U0RBR;         //
return(GetData) ;
}

/*************************************************************************************
* 函数原型: void Uart0_GetString(INT8U *s,INT8U n)
* 功能描述: 查询方式接受1个长度为n多字节
* 输入参数: n			长度
* 输出参数: *str    	 一个字符串
* 返回值  : 
**************************************************************************************/
void Uart0_GetString(INT8U *s,INT8U n)
{
for(;n>0;n--)
  *s++=Uart0_GetByte();
}


/*************************************************************************************
* 函数原型: void Uart0_SendByte(INT8U send_byte )
* 功能描述: 查询方式发送1字节数据
* 输入参数: send_byte 		待发送的数据
* 输出参数: 
* 返回值  : 
**************************************************************************************/
void Uart0_SendByte(INT8U send_byte )
{
  U0THR= send_byte;
  while((U0LSR&0x40)==0);   //直到发送缓冲器空
    
}

/*************************************************************************************
* 函数原型: void Uart0_SendString(INT8U *str)
* 功能描述: 查询方式发送1串字符
* 输入参数: *str	   待发送的字符串
* 输出参数: 
* 返回值  : 
**************************************************************************************/
void Uart0_SendString(INT8U *str)
{
while(!(*str == '\0' ))
  { //if( *str == '\0' ) break;
   Uart0_SendByte(*str++) ;
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?