📄 use_mouse_driver.h
字号:
# ifndef _USE_MOUSE_DRIVER_H_
# define _USE_MOUSE_DRIVER_H_
/*****************************************************************
* 声明库名称:光电鼠标驱动配置库 *
* 版本: v0.02 *
* 作者: I ROBOT *
* 创建日期: Copyright (C) 2008年10月29日 *
*----------------------------------------------------------------*
* [支持库] *
* 支持库名称: *
* 支持库版本: *
* 支持库说明: *
*----------------------------------------------------------------*
* [版本更新] *
* 更新: I ROBOT *
* 更新日期: *
* 版本: *
*----------------------------------------------------------------*
* [版本历史] *
* v0.01 创建版本,配置光电鼠标与AVR的接口与采样方式 *
*----------------------------------------------------------------*
* [使用说明] *
* 1.配置光电鼠标与MCU的接口与采样方式 *
*****************************************************************/
/********************
* 头 文 件 配 置 区 *
********************/
# include "AVR_Environment_Configure.h"
/********************
* 系 统 宏 定 义 *
********************/
/*----------------------*
* 代码移植配置区 *
*----------------------*/
//TODO:在这里根据移植的环境配置
/*---------------------------------------------*
* MCU与Mouse的接口配置 *
*---------------------------------------------*/
//TODO:在这里修改移植配置
/*
# ifndef MCU_MOUSE_INTERFACE_CONFIGURE
# define MCU_MOUSE_INTERFACE_CONFIGURE
# define DDR_MOUSE_CLK (DDR_PD2)
# define DDR_MOUSE_DATA (DDR_PD0)
# define WRITE_MOUSE_CLK (WRITE_PD2)
# define WRITE_MOUSE_DATA (WRITE_PD0)
# define READ_MOUSE_CLK (READ_PD2)
# define READ_MOUSE_DATA (READ_PD0)
# endif
*/
/*---------------------------------------------*
* Mouse采样方式配置 *
*---------------------------------------------*/
//TODO:在这里配置Mouse的采样方式
# ifndef SAMPLING_METHODS_CONFIGURE
# define SAMPLING_METHODS_CONFIGURE
// # define USE_ONLY_PIN_CONFIGURE
# define USE_PIN_AND_EINT_CONFIGURE
//# define USE_EINT_AND_USART_CONFIGURE
# endif
/********************
* 常 数 宏 定 义 *
********************/
/*----------------------*
* 代码移植非配置区 *
*----------------------*/
//TODO:通用代码不必修改
/*---------------------------------------------*
* Mouse数据格式宏定义 *
*---------------------------------------------*/
# ifndef MOUSE_DATA_FORMAT
# define MOUSE_DATA_FROMAT
# define MOUSE_Y_OVF 7
# define MOUSE_X_OVF 6
# define MOUSE_Y_SIGN 5
# define MOUSE_X_SIGN 4
# define MOUSE_RESERVE 3
# define MOUSE_M_BTN_DOWN 2
# define MOUSE_R_BTN_DOWN 1
# define MOUSE_L_BTN_DOWN 0
# endif
/*---------------------------------------------*
* Mouse数据帧格式宏定义 *
*---------------------------------------------*/
# ifndef MOUSE_DATA_FRAME_FORMAT
# define MOUSE_DATA_FRAME_FORMAT
# define MOUSE_FRAME_SIZE 11
# define MOUSE_FRAME_NUM 3
# define FRAME_START_BIT 0
# define FRAME_DATA0_BIT 1
# define FRAME_DATA1_BIT 2
# define FRAME_DATA2_BIT 3
# define FRAME_DATA3_BIT 4
# define FRAME_DATA4_BIT 5
# define FRAME_DATA5_BIT 6
# define FRAME_DATA6_BIT 7
# define FRAME_DATA7_BIT 8
# define FRAME_PARITY_BIT 9
# define FRAME_STOP_BIT 10
# endif
/*---------------------------------------------*
* Mouse指令宏定义 *
*---------------------------------------------*/
# ifndef MOUSE_INSTRUCTION
# define MOUSE_INSTRUCTION
# define MOUSE_RESET 0XFF
# define MOUSE_LIVE 0XF4
# define MOUSE_ACK_1 0xFA
# define MOUSE_ACK_2 0XAA
# define MOUSE_ACK_3 0X00
# endif
/********************
* 动 作 宏 定 义 *
********************/
/*---------------------------------------------*
* MCU与Mouse数据流操作宏定义 *
*---------------------------------------------*/
# ifndef MCU_MOUSE_DATA_STREAM_CONTROL
# define MCU_MOUSE_DATA_STREAM_CONTROL
//TODO:在这里添加只使用端口配置的接口配置代码
# ifdef USE_ONLY_PIN_CONFIGURE
# endif
//TODO:在这里添加使用端口和外中断配置的接口配置代码
# ifdef USE_PIN_AND_EINT_CONFIGURE
# define WRITE_MOUSE_CLK_HIGH (P1OUT |= BIT4)
# define WRITE_MOUSE_CLK_LOW (P1OUT &= ~BIT4)
# define WRITE_MOUSE_DATA_HIGH (P4OUT |= BIT7)
# define WRITE_MOUSE_DATA_LOW (P4OUT &= ~BIT7)
# define READ_MOUSE_CLK_ (P1IN&BIT4)
# define READ_MOUSE_DATA_ (P4IN&BIT7)
# endif
//TODO:在这里添加只使用外中断和串口配置的接口配置代码
# ifdef USE_EINT_AND_USART_CONFIGURE
# endif
# endif
/*---------------------------------------------*
* MCU与Mouse数据流方向宏定义 *
*---------------------------------------------*/
# ifndef MCU_MOUSE_DATA_STREAM_DIRECTION
# define MCU_MOUSE_DATA_STREAM_DIRECTION
//TODO:在这里添加只使用端口配置的数据流代码
# ifdef USE_ONLY_PIN_CONFIGURE
# endif
//TODO:在这里添加使用端口和外中断配置的数据流代码
# ifdef USE_PIN_AND_EINT_CONFIGURE
# define DATA_FROM_MOUSE do\
{\
P4DIR &= ~BIT7;\
P4OUT |= BIT7;\
}\
while (0);
# define MOUSE_DATA_FROM_MCU do\
{\
P4DIR |= BIT7;\
}\
while (0);
# define CLK_FROM_MOUSE do\
{\
P1DIR &= ~BIT4;\
P1OUT |= BIT4;\
}\
while (0);
# define MOUSE_CLK_FROM_MCU do\
{\
P1DIR |= BIT4;\
}\
while (0);
# endif
//TODO:在这里添加只使用外中断和串口配置的数据流代码
# ifdef USE_EINT_AND_USART_CONFIGURE
# endif
# endif
/*---------------------------------------------*
* MCU与Mouse控制指令宏定义 *
*---------------------------------------------*/
# ifndef MCU_MOUSE_CONTROL_INSTRUCTION
# define MCU_MOUSE_CONTROL_INSTRUCTION
# define WAIT_MOUSE_CLK_LOW do\
{\
while (READ_MOUSE_CLK_);\
}\
while (0);
# define WAIT_MOUSE_CLK_HIGH do\
{\
while (!(READ_MOUSE_CLK_));\
}\
while (0);
# endif
/*---------------------------------------------*
* Mouse中断资源插入函数配置 *
*---------------------------------------------*/
# ifndef MOUSE_ISR_INSERT_CODE
# define MOUSE_ISR_INSERT_CODE
# ifdef USE_ONLY_PIN_CONFIGURE
# endif
# ifdef USE_PIN_AND_EINT_CONFIGURE
# define INSERT_MOUSE_EINT_ISR_CODE (Insert_Mouse_EINT_ISR_Code())
# endif
# ifdef USE_EINT_AND_USART_CONFIGURE
# endif
# endif
/********************
* 模块结构体定义区 *
********************/
typedef struct Mouse_Struct
{
INT16 x;
INT16 y;
BOOL b_Left_Btn_Down;
BOOL b_Right_Btn_Down;
}Mouse;
/********************
* 函 数 声 明 区 *
********************/
/*---------------------------------------------*
* 公 有 函 数 声 明 区 *
*---------------------------------------------*/
extern void Mouse_Hardware_Configure(void);
extern void Mouse_Init(void);
/*---------------------------------------------*
* 私 有 函 数 声 明 区 *
*---------------------------------------------*/
//TODO:在这里添加只使用端口配置的函数声明
# ifdef USE_ONLY_PIN_CONFIGURE
extern Mouse *Mouse_Data_Process(void);
# endif
//TODO:在这里添加使用端口和外中断配置的函数声明
# ifdef USE_PIN_AND_EINT_CONFIGURE
extern void Insert_Mouse_EINT_ISR_Code(void);
# endif
//TODO:在这里添加使用外中断和串口配置的函数声明
# ifdef USE_EINT_AND_USART_CONFIGURE
# endif
/********************
* 模块函数声明区 *
********************/
/********************
* 模块变量声明区 *
********************/
/********************
* 全局变量声明区 *
********************/
# endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -