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

📄 uart2pc.c

📁 5416完整例程
💻 C
字号:
/*********************************************************************************
*  MCPSB.C	v1.00   测试MCBSP同步串口测试的主程序	                             *
*  版权(c) 	2003-		北京合众达电子技术有限责任公司			                 *
*  设计者:	段立锋								                                 *
**********************************************************************************/
#include "type.h"
#include "codec.h"
#include "uart.h"
#include "sysreg.h"
#include "mcbsp54.h"
#include "memory.h"
#include "comm.h"

unsigned int uart_send_sigle8(HANDLE Channel,unsigned int send_data);
/*帧长度的设定*/
#define  FRAMLONGTH    0x104

#define  DataLongth   0x100

typedef struct _UartForDec5416{
	unsigned int Length;
	unsigned int Type;
	unsigned int Mutul;
	unsigned int Data[DataLongth];
	unsigned int Check;
}UartForDec5416, *PuartForDec5416; 

HANDLE uart_b =0;
PuartForDec5416 precieve =0;	
unsigned int i= 0;
unsigned int k= 0;
int uart_s=0,uart_err=0,fifostatus=0;
unsigned long flashbaddr=0;
unsigned long flashaddr = 0;
PuartForDec5416 psend=0;
unsigned int datasendlong = 0;
unsigned int errorsend = 0;
unsigned int uartnull = 0;
unsigned int uartsdata = 0;
unsigned int uart[0x104] ={0};
unsigned int uarts[0x104] = {0};

main()
{	
	/*设置系统时钟*/
	sys_clk(CLK160);
	/*初始化DEC5416板卡*/
	dec5416_init();
	for(i = 0 ; i<0x104;i++)
	{
		uart[i] = 0;
		uarts[i] = 0;
	}
	/*获取有效的串口句柄*/
	uart_b = uart_open(UART_B);
	/*初始化串口*/
	uart_setup(uart_b,    /*串口A*/
			   buad_19k2,  /*串口的波特率设置*/
			   data_w8,   /*数据长度为8*/ 
			   data_s1,   /*数据停止位为1*/ 
			   //uart_parity,    /*设置奇较验位*/	 
			   0,
			   (fifo_enable+fifo_txdip16+fifo_rxdip16),/*FIFO设置*/ 
			   0);       /*设置自闭环方式*/		   


	/*关闭系统的串口中断*/
	sysint_enable(0x0);
	
	/*清空fifo*/
	while(uartnull ==0)
	{
		if((uart_read_reg(uart_b,lsr) & 0x1) == 1)
		{
			uart_read_reg(uart_b,rhr);
		} 
		else
		{
			uartnull = 1;
		}
	}
	for(;;)
	{
		/*是否有数据*/
		if((uart_read_reg(uart_b,lsr) & 0x1) == 1)
		{
			for(i =0;i<400;i++)
			{}
			uartsdata = uart_read_reg(uart_b,rhr);
			for(i =0;i<400;i++)
			{}
			uartsdata = uartsdata & 0xff;
			uart_send_sigle8(uart_b,uartsdata);
		}
	}			     
}
unsigned int uart_send_sigle8(HANDLE Channel,unsigned int send_data)
{
	unsigned int lsrdata;
	unsigned int timeout = 0x1000;

	timeout = 0x4000;
	for(;;)
	{
		timeout--;
		lsrdata = uart_read_reg(Channel,lsr);
		/*上一次发送是否完成*/
		if(lsrdata & 0x40)
		{
			/*发送数据的高8位*/
			uart_write_reg(Channel,thr,send_data);
			break;
		}
		/*检查是否超时*/
		if(!(timeout))
		{
			return 0xFFFF;
		}
	}
	return 0;
}

⌨️ 快捷键说明

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