S5P6818学习(2)-------串口收发数据(polling)

void uart0_init(void)//uart0的初始化
{
    GPIOD.ALTFN0 &= ~( 3 << 28 );//将UART0对应的gpio口设置为UART模式
    GPIOD.ALTFN0 |= ( 1 << 28 );
    GPIOD.ALTFN1 &= ~( 3 << 4 );
    GPIOD.ALTFN1 |= ( 1 << 4 );

    UART0.UBRDIV = 26;            //这里是设置串口的波特率,UBRDIV是整数部分
    UART0.UFRACVAL = 2;           //UFRACVAL是小数部分,算出的小数  *  16  就是该位的值

    UART0.ULCON = 3;               //这里是设置一次传输位数:这里是8位

    UART0.UCON &= ~(0XF << 0 );    //这里是设置串口模式,这里设置的是收发位的模式
    UART0.UCON |= ( 5 << 0 );       //设置为 中断或轮训模式
}

void uart0_putc(char data)
{
    while((UART0.UTRSTAT & (1 << 2)) == 0) ;//这里UTRSTAT寄存器的对应为是用来检测发送
                                            //缓存器是否为空
    
    UART0.UTXH = data;                      //将数据放到UTXH寄存器中,芯片会自动发送数据
}

char uart0_getc(void)//用来接收数据的函数
{
    char data = 0;

    while((UART0.UTRSTAT & 1) == 0) ;//判断是否接受到数据      
    
    data = UART0.URXH & 0XFF;        //接收到的数据会放到URXH寄存器中,将数据取出放到data中
    return data;
}
int main()
{
    char data;
    uart0_init();                    //初始化串口

    while(1)
    {
        data = uart0_getc();        //接收数据

        uart0_putc(data);            //发送数据
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值