📄 driver.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 + -