SHOW 的专栏

梦想,努力,坚持,信念!

ARM学习之UART实验

/***************************************************
Project: UATR实验
  Writer:  SHOW      
  Time:  2011/10/17 
  Hareware: 硬件平台:mini2440 , J-link.
  Function: 通过终端SecureCRT输入数字,回显数字+1。比如输入1回显2.
  Direction:      
   参考资料:韦东山《嵌入式linux应用开发完全手册》Page171.
***************************************************/
#include "2440addr.h"
#include "2440lib.h"
#include "2440slib.h"
#include "def.h"
#include "mmu.h"
#include "Option.h"


#define LED1_OFF (1<<5)
#define LED2_OFF (1<<6)
#define LED3_OFF (1<<7)
#define LED4_OFF (1<<8)


#define MPLL_200MHZ ((0x5c<<12) | (0x01<<4) | (0x02))


void Init_UART(void);
void Set_PCLK_50M(void);
void Send_Character(unsigned char c);
unsigned char Receive_Character(void);




//========================================================================
// 函数名称: 延时1ms子函数
// 功能描述: 延时      
// 参数:     times为延时的ms数。 
// 返回值:   void
//========================================================================
void Delay1ms(int times)
{
int i;
for( ;  times > 0; times-- )
for(i=400; i>0 ; i--);
}


//========================================================================
// 函数名称: 主函数
// 功能描述: 函数入口      
// 参数:     void 
// 返回值:   void
//========================================================================
void Main(void)  
{
unsigned char c;

Set_PCLK_50M();
Init_UART();
                           
    while(1) 
    {
    c = Receive_Character();
    Delay1ms(100);
   
    Send_Character(c+1);
    }
    
}


//========================================================================
// 函数名称: UART初始化子函数
// 功能描述:      
// 参数:     void 
// 返回值:   void
//========================================================================
void Init_UART(void)
{
rGPHCON |= ((1 << 7) | (1 << 5));   //设置 GPH2,GPH3 为TXD0,RXD0 口。
rGPHUP  |= ((1 << 3) | (1 << 2));

rULCON0 = 0x03;
rUCON0  = 0x05;     // UART时钟源为PCLK。Transmit与Receive都为查询或者中断模式
rUFCON0 = 0x00;       // 不使用FIFO
rUMCON0 = 0x00;       // 不使用流控
rUBRDIV0 = (50000000 / (115200 * 16)) - 1;

}


//========================================================================
// 函数名称: PCLK大小设置函数
// 功能描述  设置PCLk设置为50M,用于UART。        
// 参数:     void 
// 返回值:   void
//========================================================================
void Set_PCLK_50M(void)
{
rMPLLCON = 0;
rMPLLCON  |= MPLL_200MHZ;   //   MPLL = FCLK
rCLKDIVN = 0x03;           //  FCLK:HCLK:PCLK = 1:2:4 => PCLK = 50MHz.
}


//========================================================================
// 函数名称: 发送字符函数
// 功能描述  如果UTRSTAT0位[2]为1则说明发送完毕,则可以向UTXH0写入要发送的字符。        
// 参数:     void 
// 返回值:   void
//========================================================================
void Send_Character(unsigned char c)
{
while(!(rUTRSTAT0 & (1<<2)));
rUTXH0 = c;
}


//========================================================================
// 函数名称: 接受字符函数
// 功能描述  如果UTRSTAT0位[0]为1则说明接受缓冲区有数据,读UTXH0则可以得到数据。        
// 参数:     void 
// 返回值:   void
//========================================================================
unsigned char Receive_Character(void)
{
while(!(rUTRSTAT0 & (1<<0)));
return rURXH0;
}
阅读更多
个人分类: ARM9
想对作者说点什么? 我来说一句

ARM7UART实验程序

2009年11月20日 71KB 下载

ARM9硬件接口学习UART

jun2ran jun2ran

2009-08-25 14:46:00

阅读数:3455

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭