sio.c

来自「ADS下的bios工程」· C语言 代码 · 共 82 行

C
82
字号
#include <bios/s3c2410x.h>#include <bios/time.h>#include <bios/timer.h>#undef DEBUG#ifdef DEBUG#define PRINTF(fmt, args...) printf("%s-%s()[%d]: " fmt, \      __FILE__, __FUNCTION__, __LINE__, args)#else#define PRINTF(fmt, args...)#endifextern struct timer timers[NR_TIMERS] ;int ser_printc(char ch){    CSRB_WRITE(DEBUG_TX_BUFF_BASE, ch) ;     while (1)         if (CSR_READ(DEBUG_CHK_STAT_BASE) & DEBUG_TX_DONE_CHECK_BIT)             break ;    if (ch == '\n') {        CSRB_WRITE(DEBUG_TX_BUFF_BASE,'\r') ;         while (1)             if (CSR_READ(DEBUG_CHK_STAT_BASE) & DEBUG_TX_DONE_CHECK_BIT)                break ;    }    return 0;}int ser_prints(char *buff, int nr){    int    i;    for (i = 0; i < nr; i ++)         ser_printc(buff[i]) ;    return 0;}int  ser_read(char *buf, int nr){    int    i;    for (i = 0;i < nr;i ++) {        while (1) {            if (CSR_READ(DEBUG_CHK_STAT_BASE) & DEBUG_RX_CHECK_BIT) {                buf[i] = CSRB_READ(DEBUG_RX_BUFF_BASE) ;                 return  1;            }             else if ((volatile int)timers[0].to == 1)                 return 0 ;        }    }    return  1;}int ser_init(void){    /* Initialize Uart Channel 0 */    CSR_WRITE(UFCON0, DEBUG_UFCON_REG_VAL) ;    CSR_WRITE(UMCON0, DEBUG_UMCON_REG_VAL) ;    CSR_WRITE(ULCON0, DEBUG_ULCON_REG_VAL) ;    CSR_WRITE(UCON0, DEBUG_UCONT_REG_VAL) ;    CSR_WRITE(UBRDIV0, DEBUG_UBAUD_REG_VAL) ;    /* Initialize Uart Channel 1 */    CSR_WRITE(UFCON1, DEBUG_UFCON_REG_VAL) ;    CSR_WRITE(UMCON1, DEBUG_UMCON_REG_VAL) ;    CSR_WRITE(ULCON1, DEBUG_ULCON_REG_VAL) ;    CSR_WRITE(UCON1, DEBUG_UCONT_REG_VAL) ;    CSR_WRITE(UBRDIV1, DEBUG_UBAUD_REG_VAL) ;    return 0 ;}

⌨️ 快捷键说明

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