⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 driver.h

📁 ucos 在GAMEBOY上的移植
💻 H
字号:
#ifndef _DRIVER_H_
#define _DRIVER_H_


/*
*************************************************************
*	用于定义各种设备 以及和设备有关的参数
*	目前主要是LCD 以后加入串口等
*
*	作者: 李强 (mail2li@21cn.com or mail2li@163.com)
*
*
*	声明:	你仅可以将以下代码使用在你的商用或非商用,获利或非获利软件中
*			你可以任意修改以下代码,
*			唯一要求:请保留本信息及本人名字等信息
*
************************************************************
*/

/*
*********************************************************************
*
*	******定义字符型控制台结构体******
*
*	该控制台可以是双向的 也可以是单向的
*	但要求此控制台必须工作在缓冲方式
*	              ~~~~      ~~~~
*	支持的类型有:
*	普通串口(MCU内置或16C55x扩展的) : Comx(x=1,2,...)
*	LCD端口--通过总线直接接在MCU上的LCD屏 :
*	name 基本上没什么用 可以用来给控制台给个编号
*********************************************************************
*/

typedef enum DEF_CONSTYPE_DEF
{
	STRING,						// 普通字符串 为了方便实现dsprintf和dsscanf
	UART_I,						// MCU内置串口
	UART_X,					// MCU扩展串口
	LCD
}constype;

typedef u16 hzchar;		// 汉字的数据定义

// 控制台结构体定义
// 缓冲型的控制台 可以是字符式(串口 IIC SPI等)的 也可以是点阵式的(LCD)
// 对于此类型函数 只允许使用提供的三个接口函数指针操作 绝对禁止直接操作内部数据结构
typedef struct DEF_CONS_DEF
{
	constype type;				// 类型
	char name[8];				// 名字 主要是为了取分相同类型的不同的设备
#ifdef BUF_GLOBALS
	// 严禁在普通函数中操作缓冲区指针
	buf * pTXbuf;					// 控制台 发缓冲区指针
	buf * pRXbuf;					// 控制台 收缓冲区指针
#endif
	void (*init)(void);				// 控制台初始化函数指针
	u8 (*putc)(u8);				// 发一字符函数指针
	hzchar (*putHZ)(hzchar);				// 发一字符函数指针
	u8 (*puts)(u8 *);				// 发一字符串函数指针
	u8 (*getc)(void);					// 收一字符函数指针
}cons;

#define TABLE_WIDE	(4)					// tab 宽度
#define ASC_FONT_W	(8)					// ASCII字符宽度
#define ASC_FONT_H	(12)				// ASCII字符高度
#define HZ_FONT_W	(2*ASC_FONT_W)		// 汉字宽度 一般认为的字母的两倍宽
#define HZ_FONT_H	ASC_FONT_H			// 汉字高度 一般认为与字母等高

#if (ASC_FONT_W == 6 && ASC_FONT_H == 12)
	#define ASCK ASCII_6x12
#elif (ASC_FONT_W == 8 && ASC_FONT_H == 12)
	#define ASCK ASCII_8x12
#elif (ASC_FONT_W == 8 && ASC_FONT_H == 16)
	#define ASCK ASCII_8x16
#else
	#error "Font define error"
#endif

#endif

⌨️ 快捷键说明

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