DragonOS/kernel/driver/uart/uart.h

64 lines
1.2 KiB
C
Raw Normal View History

2022-04-15 07:23:17 +00:00
/**
* @file uart.h
* @author longjin (longjin@RinGoTek.cn)
* @brief uart驱动程序 RS-232
* @version 0.1
* @date 2022-04-15
*
* @copyright Copyright (c) 2022
*
*/
#pragma once
#include <common/glib.h>
#define UART_SUCCESS 0
#define E_UART_BITS_RATE_ERROR 1
#define E_UART_SERIAL_FAULT 2
enum uart_port_io_addr
{
COM1 = 0x3f8,
COM2 = 0x2f8,
COM3 = 0x3e8,
COM4 = 0x2e8,
COM5 = 0x5f8,
COM6 = 0x4f8,
COM7 = 0x5e8,
COM8 = 0x4E8,
};
enum uart_register_offset
{
REG_DATA = 0,
REG_INTERRUPT_ENABLE = 1,
REG_II_FIFO = 2, // Interrupt Identification and FIFO control registers
REG_LINE_CONTROL = 3,
REG_MODEM_CONTROL = 4,
REG_LINE_STATUS = 5,
REG_MODEM_STATUE = 6,
REG_SCRATCH = 7
};
/**
* @brief com口
*
* @param port com口的端口号
* @param bits_rate
*/
int uart_init(uint32_t port, uint32_t bits_rate);
/**
* @brief
*
* @param port
* @param c
*/
void uart_send(uint32_t port, char c);
/**
* @brief uart接收数据
*
* @param port
* @return uchar
*/
uchar uart_read(uint32_t port);