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

📄 main.c

📁 这是LPC2300的例程 ZLG的ARM2300开发板带的
💻 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:		1.0
** Descriptions:		The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by:			Chenmingji
** Created date:		2004-09-16
** Version:				1.0
** Descriptions:		The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:			Litiantian
** Modified date:		2006-12-30
** Version:
** Descriptions:		UART0通讯实验,中断方式。
**
********************************************************************************************************/
#include 	"config.h"

#define 	UART0_INT		6

uint8 		rcv_buf[8];								// UART0数据接收缓冲区
volatile	uint8 rcv_new = 0;						// 接收新数据标志

/*********************************************************************************************************
** 函数名称 :IRQ_UART0
** 函数功能 :串口0接收中断服务程序
** 入口参数 :无。
** 出口参数 :无。
*********************************************************************************************************/
void __irq IRQ_UART0(void)
{
	uint8 i = 0;

	rcv_new = 1;								// 设置接收到新的数据标志
	for (i=0; i<8; i++)	rcv_buf[i] = U0RBR;		// 读取FIFO的数据,并清除中断
	VICVectAddr = 0x00;							// 中断处理结束
}

/*********************************************************************************************************
** 函数名称 :UART0_AllIni
** 函数功能 :令串口0完成全部初始化工作
** 入口参数 :无。
** 出口参数 :无。
*********************************************************************************************************/
void	UART0_AllIni(void)
{
	uint32 bak = 0;
	
	PCONP |= 1 << 3;								// 使能UART0
	PINSEL0 = (0x01 << 4) | (0x01 << 6);			// 设置P0.2和P0.3连接到UART0

	/* 设置串口波特率 */
	U0LCR = 0x80;									// DLAB = 1	
	bak   = (Fpclk >> 4) / 115200;
	U0DLM = bak >> 8;
	U0DLL = bak & 0xFF;
	
	/* 设置串口模式 */
	bak   = 8 - 5;									// 设置数据位个数
	bak &= ~0x04;									// 设置为1位停止位
	
	bak &= ~(0x01 << 4);							// 设置为无奇偶校验 
	U0LCR = bak;									// 将模式设置字写入U0LCR

	/* 配置中断 */
	U0IER = 0x01;									// 设置中断使能寄存器,使能RDA中断
	U0FCR = 0x81;									// 使能FIFO,并设置FIFO缓冲区大小为8个字节
	
    VICIntEnClr |= 1 << UART0_INT;					// 禁止本中断
	
	VICVectPri6 = 0x05;								// 设置串口中断优先级为5
	VICVectAddr6 = (uint32)IRQ_UART0;				// 装入串口中断服务程序地址

	VICIntEnable |= 1 << UART0_INT;					// 使能本中断
	IRQEnable();									// 使能IRQ中断
}

/*********************************************************************************************************
** 函数名称 :UART0_SendData
** 功能描述 :从串口0发送数据
** 入口参数 :data_buf:发送数据缓冲区首地址
**			  count	  :发送字节数
** 出口参数 :无
********************************************************************************************************/
void UART0_SendData(uint8 *data_buf,uint8 count)
{
	uint32 i = 0;
	
	for(i = 0;i < count;i++)
	{ 
		U0THR   = data_buf[i];
		while ( (U0LSR & 0x20) == 0 );	
	}
}

/*********************************************************************************************************
** 函数名称 :main
** 函数功能 :以中断方式从串口UART0接收字符并不断发送回上位机显示。
** 入口参数 :无。
** 出口参数 :若为0则表明程序出错。
** 调试说明 :需要PC串口显示终端软件如EasyARM.exe。
*********************************************************************************************************/
int main (void)
{
	UART0_AllIni();									// 初始化串口0的引脚,通讯参数,中断参数,设置FIFO使能且触发字节为8个
	while (1)
	{
		if (rcv_new == 1)							// 检查接收标志,若接收到字符串则再将其发送回去
		{	
			rcv_new = 0;
			UART0_SendData(rcv_buf,8);				// 串口0接收到字符串后,再发送回去
		}
	}
    return 0;
}

⌨️ 快捷键说明

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