Uart串口

Posted zongzi10010

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Uart串口相关的知识,希望对你有一定的参考价值。


title: Uart串口
tags: ARM
date: 2018-10-20 16:38:28
---

Uart串口

和单片机的应用没什么区别,首先设置IO复用,设置波特率和数据位,以及中断相关的,简单的应用测试可以先关掉中断.从下图看到,usb转串口连接到COM1COM1是内部的Uart0

技术分享图片

技术分享图片

程序初始化

UART0
RX0 GPH3
TX0 GPH2
//init uart
void Uart0_init()
{
    //配置GPIO 复用为uart
    //配置相应的 GPHCON 为10 串口
    // 也就是 _BIT5,BIT7 置1  BIT4,BIT6清零
    GPHCON &=~(_BIT4|_BIT5|_BIT6|_BIT7);
    GPHCON |=(_BIT5|_BIT7);

    //设置上拉
    GPHUP &=~(_BIT2|_BIT3);

    //禁止红外,8N1
    ULCON0=(_BIT0|_BIT1);

    // PCLK(50M),中断/查询模式打开
    // FCLK : HCLK : PCLK = 400m : 100m : 50m
    UCON0 = (0x01)|(0x01<<2); 
    UBRDIV0=26;//CLK/(baund*16)-1


    //UFCON0 FIFO 不使用
    //UMCON0 不使用流控
    //UTRSTAT0 中断标志位
    //UERSTAT0 错误标志
    //UFSTAT0  FIFO标志
    //UMSTAT0  模式配置,CTS
    //UTXH0、URXH0    BUF

    //这里要清除标志位,不然好像有点问题
    UTRSTAT0=0x06;
}

int putchar(int c)
{
    while(!(UTRSTAT0&_BIT2));
    // UTXH0 被定义为uint,这里应该是char类型的地址0x50000023(B) 
    UTXH0 = (unsigned char )c;
}
int getchar(void)
{
    while(!(UTRSTAT0&_BIT0));
    return URXH0;
}

int puts(const char *s)
{
    while(*s)
    {
        putchar(*s);
        s++;
    }
}



以上是关于Uart串口的主要内容,如果未能解决你的问题,请参考以下文章

六 linux UART串口驱动代分析

串口uart发送出错

单片机下串口(UART)协议包接收程序

UART串口WiFi模块的工作原理及应用

HaaS100串口UART使用介绍

rk3399修改调试串口