我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 627|回复: 2

STM32 US2鼠标控制

[复制链接]

该用户从未签到

36

主题

12

回帖

81

积分

一级逆天

积分
81

终身成就奖

发表于 2020-11-25 14:20:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
#include "mouse.h"
#include "usart.h"
#include "lcd.h"
//////////////////////////////////////////////////////////////////////////////////     

        
u8 MOUSE_ID;//用来标记鼠标ID
PS2_Mouse MouseX;
//处理MOUSE的数据     
void Mouse_Data_Pro(void)
{                                
    MouseX.x_pos+=(signed char)PS2_DATA_BUF[1];
    MouseX.y_pos+=(signed char)PS2_DATA_BUF[2];
    //MouseX.y_pos=-MouseX.y_pos;//Y方向反了,纠正过来
    MouseX.z_pos+=(signed char)PS2_DATA_BUF[3];         
    MouseX.bt_mask=PS2_DATA_BUF[0]&0X07;//取出掩码
}     
//初始化鼠标
//返回:0,初始化成功
//其他:错误代码
//CHECK OK 2010/5/2
u8 Init_Mouse(void)
{
    u8 t;         
    PS2_Init();                                 
    delay_ms(800);            //等待上电复位完成              
    PS2_Status=CMDMODE;       //进入命令模式
    t=PS2_Send_Cmd(PS_RESET); //复位鼠标         
    if(t!=0)return 1;
    t=PS2_Get_Byte();              
    if(t!=0XFA)return 2;
    t=0;
    while((PS2_Status&0x80)==0)//等待复位完毕
    {
        t++;
        delay_ms(10);      
        if(t>50)return 3;
    }
    PS2_Get_Byte();//得到0XAA
    PS2_Get_Byte();//得到ID 0X00         
    //进入滚轮模式的特殊初始化序列
    PS2_Send_Cmd(SET_SAMPLE_RATE);//进入设置采样率
    if(PS2_Get_Byte()!=0XFA)return 4;//传输失败
    PS2_Send_Cmd(0XC8);//采样率200
    if(PS2_Get_Byte()!=0XFA)return 5;//传输失败
    PS2_Send_Cmd(SET_SAMPLE_RATE);//进入设置采样率
    if(PS2_Get_Byte()!=0XFA)return 6;//传输失败
    PS2_Send_Cmd(0X64);//采样率100
    if(PS2_Get_Byte()!=0XFA)return 7;//传输失败
    PS2_Send_Cmd(SET_SAMPLE_RATE);//进入设置采样率
    if(PS2_Get_Byte()!=0XFA)return 8;//传输失败
    PS2_Send_Cmd(0X50);//采样率80
    if(PS2_Get_Byte()!=0XFA)return 9;//传输失败
    //序列完成           
    PS2_Send_Cmd(GET_DEVICE_ID); //读取ID
    if(PS2_Get_Byte()!=0XFA)return 10;//传输失败
    MOUSE_ID=PS2_Get_Byte();//得到MOUSE ID     

    PS2_Send_Cmd(SET_SAMPLE_RATE);//再次进入设置采样率
    if(PS2_Get_Byte()!=0XFA)return 11;//传输失败
    PS2_Send_Cmd(0X0A);//采样率10
    if(PS2_Get_Byte()!=0XFA)return 12;//传输失败         
    PS2_Send_Cmd(GET_DEVICE_ID); //读取ID
    if(PS2_Get_Byte()!=0XFA)return 13;//传输失败
    MOUSE_ID=PS2_Get_Byte();//得到MOUSE ID         

    PS2_Send_Cmd(SET_RESOLUTION);  //设置分辨率
    if(PS2_Get_Byte()!=0XFA)return 14;//传输失败   
     PS2_Send_Cmd(0X03);//8点/mm
    if(PS2_Get_Byte()!=0XFA)return 15;//传输失败
    PS2_Send_Cmd(SET_SCALING11);   //设置缩放比率为1:1
    if(PS2_Get_Byte()!=0XFA)return 16;//传输失败
      
     PS2_Send_Cmd(SET_SAMPLE_RATE); //设置采样率
    if(PS2_Get_Byte()!=0XFA)return 17;//传输失败   
     PS2_Send_Cmd(0X28);//40
    if(PS2_Get_Byte()!=0XFA)return 18;//传输失败
      
    PS2_Send_Cmd(EN_DATA_REPORT);   //使能数据报告
    if(PS2_Get_Byte()!=0XFA)return 19;//传输失败

    PS2_Status=MOUSE;//进入鼠标模式
    return 0;//无错误,初始化成功   
}
回复

使用道具 举报

  • TA的每日心情
    开心
    2024-10-29 20:24
  • 签到天数: 2 天

    [LV.1]初来乍到

    20

    主题

    551

    回帖

    558

    积分

    PADS20201123初级班

    积分
    558

    终身成就奖

    发表于 2020-11-25 15:53:27 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-12-18 15:18
  • 签到天数: 1 天

    [LV.1]初来乍到

    61

    主题

    2245

    回帖

    914

    积分

    二级逆天

    积分
    914

    终身成就奖特殊贡献奖优秀斑竹奖

    发表于 2020-11-26 08:24:30 | 显示全部楼层
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    每日签到,有金币领取。


    Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

    本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

    ( 闽ICP备2024076463号-1 ) 论坛技术支持QQ群171867948 ,论坛问题,充值问题请联系QQ1308068381

    平平安安
    TOP
    快速回复 返回顶部 返回列表