串口打印,好东西啊这个。方针便是从板子传输数据打印在超级终端上,也便是在电脑上能显现板子传输的数据即可,这个比较简单,有参阅了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;//全撤销上拉电阻【0;10」共11个I/O口
if(mypclk == 0)//假如为0就用mpll中PCLK的时钟频率,这儿我用了50MHz,并且有必要是50MHz
mypclk = PCLK;//mpll的PCLK不便是50MHz么,假如设置为mypclk为0应该也是能够,没试。
rUFCON0 = 0x0;
rUFCON1 = 0x0;
rUFCON2 = 0x0;//FIFO制止
rUMCON0 = 0x0;
rUMCON1 = 0x0;//制止AFC等
rULCON0 = 0x3;//传输字长8字节
rUCON0 = 0x245;//【0,3】是保存没得设置的,设置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();
}
}