串口回写

1、init.s文件代码:

area init,code,readonly
reset
ldr sp,=4096
import main
bl main
end

2、def.h文件代码:

#define GPHCON   (*((volatile unsigned *)0x56000070))
#define GPHDAT   (*((volatile unsigned *)0x56000074))


#define ULCON0   (*((volatile unsigned *)0x50000000))
#define UCON0    (*((volatile unsigned *)0x50000004))
#define UFCON0   (*((volatile unsigned *)0x50000008))
#define UMCON0   (*((volatile unsigned *)0x5000000C))
#define UBRDIV0  (*((volatile unsigned *)0x50000028))
#define UTRSTAT0 (*((volatile unsigned *)0x50000010))
#define URXH0    (*((volatile unsigned *)0x50000024))
#define UTXH0    (*((volatile unsigned *)0x50000020))
#define PCLK     36864000
#define UART_CLK PCLK
#define UART_BAUD_RATE  115200
#define UART_BRD ((UART_CLK/(UART_BAUD_RATE * 16))-1)

3、main.c文件代码:

#include "def.h"


/*UART0初始化 115200,8N1,无流控*/
void uart0_init()
{
GPHCON |=0xa0;
ULCON0 =0x3;
UCON0 =0x5;
UFCON0 =0x0;
    UMCON0 =0x0;
UBRDIV0 =UART_BRD; 
}


void putc(unsigned char c)
{
while(!(UTRSTAT0 & 1<<2));
/*等待,直到发送缓冲区中的数据已经全部发送出去*/
UTXH0=c;
/*向UTXH0寄存器中写入数据,UART即自动将它发送出去*/
}


unsigned char getc(void)
{
/*等待,知道接受缓冲区中有数据*/
while(!(UTRSTAT0 & 0x1));
/*直接读取URXH0寄存器,即可获得接受到得数据*/
return URXH0;
}


void delay(unsigned int a)
{
   while(a--);
}


int main()
{
unsigned char c;
uart0_init();
while(1)
{
c=getc();
putc(c);
}
return 0;
}

4、连接S3Cmini2440开发板,建立一个终端,端口设置为COM1,每秒位数:115200,数据流控制:无,打开H-JTAG,然后就可以往终端里面输入字符了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值