************
* 作 者:tiger-john
* 时 间:2011年1月17日
* 名 称: UART0_SendByte
* 功 能: 向串口发送字节数据,并等待发送完毕。
* 入口参数: data 要发送的数据
* 出口参数: 无
**********************************************************/
void UART0_SendByte(uint8 data)
{
U0THR = data;
while(0 == (U0LSR & 0x40));
}
4. 完整的程序事例:
用轮训方式实现接收上位机数据,并把数据再发送给上位机。
view plaincopy to clipboardprint
/****************************************Copyright (c)**************************************************
** 西安邮电学院
** graduate school
** XNMS实验室
** Author:冀博
** Time:2011年1月20日
** http://blog.csdn.net/tigerjb
**
**--------------File Info-------------------------------------------------------------------------------
** File name: UART0_while
** Last modified Date: 2011-01-20
** Last Version: 1.0
** Descriptions: 通过上位机给串口发送8字节数据,ARM2200接收到串口数据后,把数据又发送回上位机
**------------------------------------------------------------------------------------------------------*/
/******************************************************************************
** Modified by: TIGER0-JOHN
** Modified date: 2011-1-21
** Version: 1.1
** Descriptions: 测试成功 ,在上面上发送16进制数时,每个之间用空格隔开
不加前缀
****************************************************************************/
#include "config.h"
/****************************************************************************
* 名 称: DelayNS()
* 功 能: 长软件延时
* 入口参数: dly 延时参数,值越大,延时越久
* 出口参数: 无
****************************************************************************/
void DelayNS(uint32 dly)
{
uint32 i;
for(; dly>0; dly--)
{
for(i=0; i<5000; i++);
}
}
/**********************************************************
* 名称: UART0_Init()
* 功能: UART0初始化(通讯波特率115200,8位数据位,
1位停止位,无奇偶校验)
* 入口参数: bps 串口波特率
* 出口参数: 无
**********************************************************/
void UART0_Init(uint32 bps)
{
uint16 Fdiv;
PINSEL0 = 0x00000005; //设置串口引脚
U0LCR = 0x83; //置为除数锁存位,进行配置
Fdiv = (Fpclk >> 4) / bps; // 设置波特率
U0DLM = Fdiv >> 8;
U0DLL = Fdiv & 0xff;
U0LCR = 0x03; //清除除数锁存位,并设置工作模式
}
/**********************************************************
* 名 称: UART0_RcvByte
* 功 能: 用查询方式接收一字节的数据
* 入口参数: 无
* 出口参数: data 要接收的数据
**********************************************************/
uint8 UART0_RcvByte(void)
{
uint8 rcv_data ;
while((U0LSR&0X01)==0); //等待数据到达
rcv_data = U0RBR; //从U0RBR中读出接收到的数据
return rcv_data; //返回接收到的数据
}
/**********************************************************
* 名 称: UART0_SendByte
* 功 能: 向串口发送字节数据,并等待