S5PV210的Uart应用

本文介绍了S5PV210平台上Uart接口的基本初始化配置及简单的测试程序实现,包括Uart初始化函数、字符收发函数、十六进制数输出函数,并通过LED程序测试验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

准备分析

         S5PV210的NandFlash应用(一)出现很多bug,所以要先把Uart搞出来了。Uart一般是和clock相关联的,但是IROM中的代码已经提升了PCLK到66.5MHZ,这里就不进行CLOCK的设置了。
        

资源工具

        同《  S5PV210的LED应用(一)

着手写程序
        为实现代码最简化,只是在LED程序的基础上进行添加,其它硬件如NandFlash,重定向等等都不涉及。函数设计如下:
        (1) void uart_init (void) ,初始化Uart
        (2) char getc (void),接收一个字符
        (3) void putc (char c) ,发送一个字符
        (4) puthex(volatile char a),发送一个16进制数,对调试NandFlash有帮助,可以输出寄存器的值。(参考: 这里
        (5) void main (void),测试以上代码。
具体的实现:

// 初始化串口 
void uart_init()
{
	// 1 配置引脚用于RX/TX功能
	GPA0CON = 0x22222222;
	GPA1CON = 0x2222;

	// 2 设置数据格式等
	// 使能fifo
	UFCON0 = 0x1;
	// 无流控
	UMCON0 = 0x0;
	// 数据位:8, 无校验, 停止位: 1
	ULCON0 = 0x3;
	// 时钟:PCLK,禁止中断,使能UART发送、接收
	UCON0  = 0x5;  				

	// 3 设置波特率
	UBRDIV0 = UART_UBRDIV_VAL;
	UDIVSLOT0 = UART_UDIVSLOT_VAL;
}

// 接收一个字符 
char getc(void)
{
	// 如果RX FIFO空,等待
	while (!(UTRSTAT0 & (1<<0)));
	// 取数据
	return URXH0;                   	
}

// 发送一个字符
void putc(char c)
{
	// 如果TX FIFO满,等待
	while (!(UTRSTAT0 & (1<<2)));
	// 写数据
	UTXH0 = c;                      	
}

/*
 * 打印16进制数
 * 例如:int a = 0x68; puthex(a);输出"68";
 */
int puthex(volatile char a)
{
    volatile char cTmp;
 
    //putchar(a);
    //方法一printf
    //printf("\n%x\n", a);
 
    //方法二,计算
    cTmp=a>>4;//右移4位,把高位放到低位
    if(cTmp<10)//如果是小于10的数
    {
        cTmp+='0';//以0-9输出
    }
    else
    {
        cTmp+='A'-10;  //大于等于10的就是ABCDEF了。
    }
    putc(cTmp);
    cTmp=a&0x0f;
    if(cTmp<10)
    {
        cTmp+='0';
    }
    else
    {
        cTmp+='A'-10;
    }
    putc(cTmp);
 
    return 0;
}

void main()				//LED 闪烁
{
	char c = 0;
	
	int a = 0x68;
	
	GPJ2CON = 0x00001111;		// 配置引脚

	GPJ2DAT = 0;			// LED on
	delay(0x100000);
	


	// 初始化串口 
	uart_init();
	
	// 开发板发送字符'A'
	putc('A');
	
	// 开发板发送"68"
	puthex(a);	

	while (1)
	{
		// 开发板接收字符
		c = getc();
		
		// 开发板发送字符c+1
		putc(c+1);		
	}

}

下载运行

        同《  S5PV210的LED应用(一)

运行调试
       
        测试OK:


遗留问题
  
        1.无


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

袁保康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值