⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uart.c

📁 周立功PXA270教学实验箱的ARM汇编指令实验2
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzhou ZHIYUAN electronics Co.,LTD.
**                                     
**                                 http://www.zyinside.com
**
**--------------File Info-------------------------------------------------------------------------------
** File Name: UART.c
** Last modified Date: 2006-8-10
** Last Version: v1.0
** Description: PXA27x的BT串口软件包 (查询控制方式)
**
**------------------------------------------------------------------------------------------------------
** Created By: 黄绍斌
** Created date: 2006-8-10
** Version: v1.0
** Descriptions:
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Description:
**
********************************************************************************************************/
#define  IN_UART
#include  "config.h"


// UART时钟频率
#define  UART_CLK		14785600 

/*********************************************************************************************************
** Function name: UART_Init
** Descriptions: 初始化串口。设置为8位数据位,1位停止位,无奇偶校验
** Input: bps	波特率,最大为115200
** Output: 无
** Created by: 黄绍斌
** Created Date: 2006-8-10
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void  UART_Init(uint32 bps)
{  			
	uint16 Fdiv;
	int  i;
	
	// 参数过滤
	if(bps>115200) bps = 115200;

	// GPIO初始化
    GPDR1 = GPDR1 | (1 << (43-32));			// GP43(BTTXD)为输出功能   
    GPDR1 = GPDR1 & ( ~(1 << (42-32)) );	// GP42(BTRXD)为输入功能   
    
    GAFR1_L  =GAFR1_L & ( ~(0x0F << ((42-32) *2)) );
    GAFR1_L = GAFR1_L | 
    		  (01 << ((42-32) *2)) | 		// 设置引脚连接,BTRXD、BTTXD 
              (02 << ((43-32) *2)) ;		                                                
    
    // 设置UART工作模式
	BTIER = 0x40;		// 使能UART
	for(i=0; i<2000; i++);
   
   	BTLCR = 0x83;		// 设置UART工作模式,8位数据位,1位停止位,无奇偶校验。DLAB=1,可设置波特率      	     	   	
   	Fdiv = (UART_CLK / 16) / bps; 		
   	BTDLL = Fdiv & 0xFF;// 设置波特率
   	BTDLH = Fdiv >> 8;
   	
   	BTFCR = 0xC1;		// 接收触发点为32字节,使能FIFO    
   	BTLCR = 0x03;		// DLAB=0,可发送/接收数据    
   	
   	for(i=0;i<100;i++);
}



/*********************************************************************************************************
** Function name: UART_SendByte
** Descriptions: 向串口发送字节数据,并等待发送完毕。
** Input: data		要发送的数据
** Output: 无
** Created by: 黄绍斌
** Created Date: 2006-8-10
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void  UART_SendByte(uint8 data)
{  	
	int  i;       
      
    while((BTLSR&0x40) == 0);	    	// 等待发送器为空 
    for(i=0; i<100; i++);   
    BTTHR = data;				    	// 发送数据        
}



/*********************************************************************************************************
** Function name: UART_SendStr
** Descriptions: 向串口发送一字符串。
**              对于'\n'字符,发送时会加入'\r'字符。
** Input: str		要发送的字符串的指针
** Output: 无
** Created by: 黄绍斌
** Created Date: 2006-8-10
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void  UART_SendStr(char const *str)
{ 	
	while(*str != '\0')
   	{ 	
   		if(*str == '\n') UART_SendByte('\r');   	  
     	  UART_SendByte(*str++);	    // 发送数据
   	}
}



/*********************************************************************************************************
** Function name: UART_GetKey
** Descriptions: 从UART口读取一字节按键数据。
**               会一直等待,直到接收到1字节数据。
** Input: 无
** Output: 返回值即是读出值
** Created by: 黄绍斌
** Created Date: 2006-8-10
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
int  UART_GetKey(void)
{  	
	int	 i;

	while(!(BTLSR & 0x01));	
	for(i=0; i<10; i++);   
	return(BTRBR);
}

/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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