实验实现功能:利用TQ2440开发板与PC机通过UART通信方式实现通信。
——————————————————————————————————————
#define GLOBAL_CLK 1
#include "def.h"
#include "2440addr.h"
#include "2440lib.h"
void CalcBusClk(void);
void Main()
{
char string[256];
rMPLLCON =(92<<12)|(1<<4)|1; //设置FCLK为400M
ChangeClockDivider(2,1); //这个函数在2440lib.c中定义的,设置分频比为1:4:8
CalcBusClk(); //计算总线频率
Uart_Select (0); //选择串口0
Uart_Init (0,115200); // 0代表使用当前的PCLK ,115200是波特率
rGPHCON &=~((3<<4)|(3<<6));
rGPHCON |=(2<<4)|(2<<6); //把GPH3、GPH2设置为RXD[0] 、TXD[0] 功能
Uart_Printf("\n This is an uart test,write by lwj\n"); //串口上打印
while(1)
{
Uart_Printf("please,input string\n") ; //这些函数都是在2440lib.c 中定义的
Uart_GetString(string); //获取输入的字符
Uart_Printf("you input string: %s\r\n",string); //打印出输入的字符
}
}
void CalcBusClk(void) //计算总线频率
{
U32 val,UPLL;
U8 m, p, s;
val = rMPLLCON;
m = (val >> 12) & 0xff;
p = (val >> 4) & 0x3f;
s = val & 3;
FCLK = ((m+8)*(FIN/100)*2)/((p+2)*(1<<s))*100;
val = rCLKDIVN;
m = (val >> 1) & 3;
p = val & 1;
val = rCAMDIVN;
s = val >> 8;
switch (m)
{
case 0: HCLK = FCLK; break;
case 1: HCLK = FCLK >> 1; break;
case 2:
if(s & 2) HCLK = FCLK >&