📄 zlg_avalon_ps2mouse.c
字号:
/****************************************Copyright (c)**************************************************
** Guangzhou ZHIYUAN ELECTRONIC CO.,LTD.
** Research centre
** http://www.zyinside.com, http://www.zlgmcu.com
**
**---------------------------------------File Info-----------------------------------------------------
** File name: zlg_avalon_ps2mouse.c
** Latest modified Date: 2006-05-13
** Latest Version: 1.0
** Descriptions: Provide function for the ps2mouse Core
**
**
**------------------------------------------------------------------------------------------------------
** Created by: ZhouShuwu
** Created date: 2006-05-13
** Version: 1.0
** Descriptions: The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#include "zlg_avalon_ps2mouse.h"
#include "alt_types.h"
#include "sys/alt_irq.h"
#include "system.h"
#include <stdio.h>
/******************************************************************
* 与硬件相关的宏定义,用户根据实际情况修改
******************************************************************/
// PS2MOUSE_BASE是用户添加并命名的外设基地址,在SYSTEM中定义,用户需要根据不同的命名来修改此处
#ifndef PS2MOUSE_BASE //这是CYMOMETER核的基地址
#define PS2KEYBOARD_BASE 0xffffffff //user's definition here
#endif
#if PS2MOUSE_BASE == 0xffffffff
#error "No definition of PS2MOUSE_BASE core.\n"
#endif
#ifndef PS2MOUSE_IRQ //这是CYMOMETER核的基地址
#define PS2MOUSE_IRQ 0xffff //user's definition here
#endif
#if PS2MOUSE_IRQ == 0xffff
#error "No definition of PS2MOUSE IRQ.\n"
#endif
extern alt_u32 ps2mouse_addr;
volatile alt_u32 MouseData = 0;
volatile alt_u32 MouseDone = 0; // 信号量:通知外部中断事件发生
/*********************************************************************************************************
** Function name: alt_u32 ReadMouseData(void)
**
** Descriptions: read data from the ps2mouse core
**
** input parameters: none
**
** Returned value : data of ps2mouse
| D31……D22 | D21 | D20 | D19 |
| always 0 | data_ready | left_button | right_button |
---------------------------------------------------------
| D18 | D17……D9 | D8……D0 |
| middle_button | y_increment | x_increment |
** Used global variables: None
** Calling modules: None
**
** Created by: ZhouShuwu
** Created Date: 2006/05/13
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
alt_u32 ReadMouseData(void)
{
return(IORD_ZLG_AVALON_PS2MOUSE_DATA(ps2mouse_addr));
}
/********************************************************************
* 名 称:Mouse_interrupt()
* 功 能:MOUSE事件中断服务子程序,通过全局变量将读取数据告知外界
* 入口参数:context,一般用于传递中断状态寄存器的值,这里未使用
* id,中断号,这里未使用
* 出口参数:无
********************************************************************/
static void MouseIRQ(void* context, alt_u32 id)
{
/* 读数据并清中断 */
MouseData = ReadMouseData();
MouseDone++;
}
/********************************************************************
* 名 称:MouseInit()
* 功 能:MOUSE初始化
* 入口参数:none
* none
* 出口参数:无
********************************************************************/
void MouseInit(void)
{
/* 注册中断服务子程序 */
alt_irq_register(PS2MOUSE_IRQ, NULL, MouseIRQ);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -