微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > TQ2440之串口传输数据

TQ2440之串口传输数据

时间:11-21 来源:互联网 点击:
串口打印,好东西啊这个。目标就是从板子传输数据打印在超级终端上,也就是在电脑上能显示板子传输的数据即可,这个比较容易,有参考了TQ自带的2440lib.c文件,对初始化那些参考芯片跟那个c文件之后很快程序就出来了,有更简便的方法,但是要自己写出来才比较印象深刻。

程序如下:

#include "2440addr.h"

#include "Option.h"

#include "def.h"

//一旦用到U32怎么不行

unsigned int PCLK;

extern void Uart_Printf(char *fmt,...);//函数申明,不然一直提示警告

extern void Uart_Select(int ch);

void delay(void)//Delay()在2440lib.c里边有定义,不小心重定义了,纠结了一下

{

unsigned int i,j;

for(i=0;i<1000;i++)

for(j=0;j<1000;j++)

;

}

void My_uart_init(int mypclk,int mybuat)//我自己写的串口初始化

{

unsigned int a;

rGPHCON = 0x0faaa;//0x1111 1010 1010 1010选中RTS、CTS、TXD、RXD

rGPHUP = 0x7ff;//全取消上拉电阻是保留没得设置的,设置Rx错误状态中断,Tx电平中断。串口1、2设置一样

rUBRdiv0 = ((int)(mypclk/(mybuat*16)))-1;//为发送器和接收器提供串行时钟,计算公式见芯片手册

rULCON1 = 0x3;

rUCON1 = 0x245;

rUBRdiv1 = ((int)(mypclk/(mybuat*16)))-1;

rULCON2 = 0x3;

rUCON2 = 0x245;

rUBRdiv2 = ((int)(mypclk/(mybuat*16)))-1;

for(a=0;a<100;a++);//延时,参考2440lib.c,个人理解应该是

}

void Main(void)

{

Uart_Select(0);//选择串口0

My_uart_init(50000000,115200);//给时钟50MHz,波特率115200串口才能工作

Uart_Printf("\n\n");//测试2440lib.c里面关于输入\n是不是会另外补上\r,回车换行

delay();

while(1)

{

Uart_Printf("I love caimanjun more than myself\n"); //打印字符串

delay();

Uart_Printf("yes I do! \n");

delay();

}

}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top