本实验的目的是实现在linux上的minicom上,输入一个数字或字母字符,把输入的数字或字母加一之后再输出到minicom上,这个实验主要关键的部分就是设置串口的几个寄存器,其初始化如下:
#define PCLK 50000000
#define UART_CLK PCLK
#define UART_BAUD_RATE 115200
#define UART_BRD ((UART_CLK/(UART_BAUD_RATE * 16))-1)
void Uart0_init()
{
GPHCON |= 0xa0;
GPHUP = 0x0c;
ULCON0 = 0x03; //8位数据位宽度
UCON0 = 0x05; //选择PCLK时钟,数据接收和发送都采用中断方式或查询方式
UFCON0 = 0x00; //不使用FIFO
UMCON0 = 0x00; //不使用流控
UBRDIV0 = UART_BRD; //设置波特率
}
其接收和发送通过UTRSTAT0的状态寄存器来读取UTXH0和URXH0寄存器。
//发送一个字符
void putc(unsigned char c)
{
while(!(UTRSTAT0 & 0x04));//当发送器为空时
UTXH0 = c;
}
//接收一个字符
unsigned char getc(void)
{
while(!(UTRSTAT0 & 0x01));//接收到数据时
return URXH0;
}
其完整的程序如下附件:
|
文件: |
uart.rar |
大小: |
17KB |
下载: |
下载 | |
有了以上实验的基础,就可以利用Uart0来实现printf,scanf函数的功能啦,实现这两个函数,非常有利于调试程序的运行,其具体的实现方式见其程序。
|
文件: |
stdio.rar |
大小: |
83KB |
下载: |
下载 | |
阅读(635) | 评论(0) | 转发(0) |