📄 serial.c
字号:
#include "lib.h"#define S3C4510_BASE_ADDR 0x3ff0000#define S3C_REG *(volatile unsigned int *)#define UARTLCON0 (S3C_REG(S3C4510_BASE_ADDR+0xd000))#define UARTCONT0 (S3C_REG(S3C4510_BASE_ADDR+0xd004))#define UARTSTAT0 (S3C_REG(S3C4510_BASE_ADDR+0xd008))#define UARTTXH0 (S3C_REG(S3C4510_BASE_ADDR+0xd00c))#define UARTRXB0 (S3C_REG(S3C4510_BASE_ADDR+0xd010))#define UARTBRD0 (S3C_REG(S3C4510_BASE_ADDR+0xd014))#define USTAT_RCV_READY 0x20 /* receive data ready */ #define USTAT_TXB_EMPTY 0x40 /* tx buffer empty *//* initializes serial */void rt_serial_init(){ rt_uint32 divisor = 0; divisor = 0x500; /* 19200 baudrate, 50MHz */ UARTLCON0 = 0x03; UARTCONT0 = 0x09; UARTBRD0 = divisor; for(divisor=0; divisor<100; divisor++);}/* read a character from serial without interrupt enable mode */char rt_getc(){ while ((UARTSTAT0 & USTAT_RCV_READY) == 0); return UARTRXB0;}/* write a character to serial without interrupt enable mode */void rt_putc(const char c){ /* to be polite with serial console add a line feed to the carriage return character */ if (c=='\n')rt_putc('\r'); /* wait for room in the transmit FIFO */ while(!(UARTSTAT0 & USTAT_TXB_EMPTY)); UARTTXH0 = (rt_uint8)c;}/* display a string on console */void rt_puts(const char* str){ while (*str) { rt_putc (*str++); }}/*@}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -