📄 uart2pc.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 + -