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

📄 uart.c

📁 AD9958arm控制源程序
💻 C
字号:
/*------------------------------------------------------
FILE NAME   : uart.c
DESCRIPTION : lpc2132 uart driver.
VERSION     : 0.0.0 (C)aureole
AUTHOR      : Aureole
CREATE DATE : 4.5.2006
MODIFY DATE : ---
LOGS        :-\ 
          1. First create for hardware test. 4.5.2006
          

--------------------------------------------------------*/
//---------------Include files--------------------------//

#include "..\include\uart.h"
#include "..\include\common.h"
#include <string.h>


//----------------variable -----------------------------//

char receive_buffer[BUFFER_SIZE];
unsigned char uart0_receive_count=0;
unsigned char uart0_receive_ok_flag=0;

//---------------Function-------------------------------//
/*--------------------------------------------------------
NAME       : receive
ENTRY  TYPE: unsigned char *
RETURN TYPE: void
PURPOSE    : ---
VERSION    : 0.1
DESCRIPTION:
CREATE DATE: 4.5.2006
LOGS       : 1.first create;
---------------------------------------------------------*/
void   irq_uart0(void) __irq
{
	
 //	LED_ON	
	if((U0IIR & 0x0F) == 0x04){
		receive_buffer[uart0_receive_count++]=U0RBR;	
		if(receive_buffer[uart0_receive_count-2]=='\r'&&
		   receive_buffer[uart0_receive_count-1]=='\n'){
	   		uart0_receive_count=0;
	   		uart0_receive_ok_flag=TRUE;
	 	}

	VICVectAddr = 0x00;			// 中断处理结束
	}
	
///	LED_OFF
}
/*--------------------------------------------------------
NAME       : initialize_uart0
ENTRY  TYPE: void
RETURN TYPE: void
PURPOSE    : ---
VERSION    : 0.1
DESCRIPTION:
CREATE DATE: 4.5.2006
LOGS       : 1.first create;
---------------------------------------------------------*/
void initialize_uart0(void)
{
	unsigned short Fdiv;
	
	
	PINSEL0 |= 0x00000005;
	
	U0LCR = 0x83;				// DLAB=1,允许设置波特率
	Fdiv  = (Fpclk / 16 ) / UART0_BPS;	// 设置波特率  Fdiv= (VPB/(16*bps));
	U0DLM = Fdiv / 256;
	U0DLL = Fdiv % 256;
	U0LCR = 0x03;
	
	

	U0FCR = 0x01;						// 使能FIFO,并设置触发点为1字节
	U0IER = 0x01;						// 允许RBR中断,即接收中断

	// 使能IRQ中断
	
	VICIntSelect = 0x00000000;			// 设置所有的通道为IRQ中断
	VICVectCntl0 = 0x20 | 0x06;			// UART0分配到IRQ slot0,即最高优先级
	VICVectAddr0 = (unsigned long int)irq_uart0;	// 设置UART0向量地址
	VICIntEnable |= 1 << 0x06;			// 使能UART0中断

}

#ifdef DEBUG_FROM_UART1
/*--------------------------------------------------------
NAME       : initialize_uart1
ENTRY  TYPE: void
RETURN TYPE: void
PURPOSE    : ---
VERSION    : 0.1
DESCRIPTION:
CREATE DATE: 4.12.2006
LOGS       : 1.first create;
---------------------------------------------------------*/
void initialize_uart1(void)
{
	unsigned short Fdiv;
	
	
	PINSEL0 |= 0x00050000;
	
	U1LCR = 0x83;				// DLAB=1,允许设置波特率
	Fdiv  = (Fpclk / 16) / UART1_BPS;	// 设置波特率
	U1DLM = Fdiv / 256;
	U1DLL = Fdiv % 256;
	U1LCR = 0x03;
	

	U1FCR = 0x01;						// 使能FIFO,并设置触发点为1字节
	U1IER = 0x0;						// 禁止中断
}

/*--------------------------------------------------------
NAME       : send_string_to_uart1
ENTRY  TYPE: unsigned char *
RETURN TYPE: void
PURPOSE    : ---
VERSION    : 0.1
DESCRIPTION:
CREATE DATE: 4.5.2006
LOGS       : 1.first create;
---------------------------------------------------------*/
void send_string_to_uart1(char * str)
{

	
	while(*str!='\0'){
		U1THR=(*str++);
		while(!(U1LSR&0X40));
	}
	
}

#endif //DEBUG_FROM_UART1

/*--------------------------------------------------------
NAME       : send_string_to_uart0
ENTRY  TYPE: unsigned char *
RETURN TYPE: void
PURPOSE    : ---
VERSION    : 0.1
DESCRIPTION:
CREATE DATE: 4.5.2006
LOGS       : 1.first create;
---------------------------------------------------------*/
void send_string_to_uart0(char * str)
{
//	LED_ON
	
	while(*str!='\0'){
		U0THR=(*str++);
	while(!(U0LSR&0X40));	
	}
	
//	LED_OFF
	
}

/*--------------------------------------------------------
NAME       : clear_receive_buffer
ENTRY  TYPE: void
RETURN TYPE: void
PURPOSE    : ---
VERSION    : 0.1
DESCRIPTION:
CREATE DATE: 4.8.2006
LOGS       : 1.first create;
---------------------------------------------------------*/
void clear_receive_buffer(void)
{
	memset(receive_buffer,0,sizeof(receive_buffer));

}

⌨️ 快捷键说明

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