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 + -
显示快捷键?