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,然后就可以往终端里面输入字符了。