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);            //发送数据
    }
}

猜你喜欢

转载自blog.csdn.net/aa867734398/article/details/82630860
今日推荐