📄 testuart.c
字号:
//接个数据,并发送这个数据
//自建的工程,数据接发不对。why?
#include "2440lib.h"
#include "2440addr.h"
#define BPS 115200
int xmain(void)
{
unsigned char buf;
ChangeClockDivider(3,1);//1:3:6
ChangeMPllValue(127,2,1);//405MHZ
Port_Init();
Isr_Init();
//-------------------set UART--------------------//
//选择功能管脚
//GPH0 -> nCTS0
//GPH1 -> nRTS0
//GPH2 -> TXD0
//GPH3 -> RXD0
//GPH4 -> TXD1
//GPH5 -> RXD1
//GPH6 -> nRTS1/TXD2
//GPH7 -> nTXS1/RXD2
rGPHCON = ( rGPHCON & (~(0xffff)) ) | (0xaaa0);//
//上拉电阻
rGPHUP = 0x0; // The pull up function is enable
//设置串口线性控制器寄存器
rULCON0 |= (0<<6)//No infra-red
|(0<<5)//No panity(set 0xx)
|(0<<2)//One stop bit per frame
|(3<<0);//11 = 8-bit
//设置串口控制寄存器
rUCON0 |= (0<<10)//00 = PCLK
|(1<<9)//Tx interrupt Type = Level
|(1<<8)//Rx interrupt Type = Level
|(0<<7)//Rx Timer out disable
|(1<<6)//Rx error status interrupt enable
|(0<<5)//Loopback mode disable
|(0<<4)//Send break signal disable
|(1<<2)//Transmit mode (01 = inerrupt request or polling mode)
|(1<<0);//Receive mode (01 = interupt request or polling mode)
//设置串口FIFO控制寄存器
rUFCON0 |= (3<<6)//Tx FIFO Trigger Level(11 = 48-byte)
|(3<<4)//Rx FIFO Trigger Level(11 = 32-byte)
|(1<<2)//Tx FIFO reset
|(1<<1)//Rx FIFO reset
|(1<<0);//FIFO Eable
//设置串口波特率分频寄存器
rUBRDIV0 = (int) ( PCLK/(BPS*16) ) - 1 ;//PCLK, BPS
while(1)//接什么,发什么
{
while( !(rUTRSTAT0&0x01) );//Receive data ready
buf = rURXH0;//Resveice data
while( !(rUTRSTAT0&0x02) );//Transmit buffer empty
rUTXH0 = buf;//Transmit data
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -