⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uart.c

📁 一个基于ARM9的操作系统, 实现了很多的功能,包括内存管理,进程创建等
💻 C
字号:
/*
* file:
*       uart.c
* description:
*       uart controller code.
*/

void uart_ctrl_init(unsigned long pclk, int baudrate)
{
    int i;

    /* enable dbgu rx/tx */
    *AT91C_PIOA_PPUSR = (AT91C_PA9_DRXD | AT91C_PA10_DTXD);
    *AT91C_PIOA_ASR   = (AT91C_PA9_DRXD | AT91C_PA10_DTXD);
    *AT91C_PIOA_PDR   = (AT91C_PA9_DRXD | AT91C_PA10_DTXD);

    *AT91C_DBGU_CR    = (AT91C_US_RSTRX | AT91C_US_RSTTX | AT91C_US_RSTSTA);
    *AT91C_DBGU_MR    = (AT91C_US_PAR_NONE | AT91C_US_CHMODE_NORMAL);
    *AT91C_DBGU_IDR   = (0xffffffff);
    *AT91C_DBGU_BRGR  = (unsigned int)((pclk/(baudrate*16.0f) + 0.5f) - 1);

    *AT91C_DBGU_PTCR  = (AT91C_PDC_RXTDIS | AT91C_PDC_TXTDIS);
    *AT91C_DBGU_RNPR  = 0;
    *AT91C_DBGU_RNCR  = 0;
    *AT91C_DBGU_TNPR  = 0;
    *AT91C_DBGU_TNCR  = 0;
    *AT91C_DBGU_RPR   = 0;
    *AT91C_DBGU_RCR   = 0;
    *AT91C_DBGU_TPR   = 0;
    *AT91C_DBGU_TCR   = 0;
    *AT91C_DBGU_PTCR  = (AT91C_PDC_RXTEN | AT91C_PDC_TXTEN);

    *AT91C_DBGU_CR    = (AT91C_US_RXEN | AT91C_US_TXEN);

    for(i=0; i<100; i++);
}


int uart_ctrl_putchar(int c)
{
    /* wait until THR is empty. */
    while(!(*AT91C_DBGU_CSR & AT91C_US_TXRDY))
        /* nop */;
    *AT91C_DBGU_THR = (unsigned char)c;

    return c;
}


/* end of file */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -