📄 serial_core.c
字号:
#include "inc/serial.h"#include "2410addr.h"#define SERIAL_WRITE_READY() ((rUTRSTAT0) & (1<<2))#define NULL 0 unsigned char do_getc_with_timeout(unsigned long timeout, int*stat){ unsigned char c; int rxstat; while (!(rUTRSTAT0 & (1<<0))) { if (--timeout == 0) break; } if (!timeout) { c = 0; *stat = -1; } else { c = rURXH0; *stat = rUERSTAT0&0xF; } return (c);}int getc_errno = 0;__u8 do_getc(vfuncp idler, unsigned long timeout, int *statp){ __u8 c, rxstat; int do_timeout = timeout != 0; getc_errno = 0; /* reste errno */ while(!(rUTRSTAT0 & (1<<0))) { if (do_timeout) { if (!timeout) break; timeout--; } if (idler) idler(); } if (do_timeout && timeout == 0) { c = 0; rxstat = -1; } else { c = rURXH0; rxstat = rUERSTAT0&0xF; } if (rxstat) { getc_errno = rxstat; /*printk("RXSTAT error. status = 0x%08lx", rxstat);*/ if (statp) *statp = rxstat; } return (c);}char getc(void){ char c; unsigned long rxstat; while (!(rUTRSTAT0 & (1<<0))) /* nothing */; c = rURXH0; /* FIXME: 咯扁辑 俊矾 勤甸傅捞 鞘夸窃 */ rxstat = rUERSTAT0&0xF; return c;}void putc(char c){ while (!SERIAL_WRITE_READY()); rUTXH0=c;}/* * Reads and returns a character from the serial port * - Times out after delay iterations checking for presence of character * - Sets *error_p to UART error bits or - on timeout * - On timeout, sets *error_p to -1 and returns 0 */char awaitkey(unsigned long delay, int* error_p){ return (do_getc(NULL, delay, error_p));}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -