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

 找回密码
 立即注册
搜索
查看: 687|回复: 0

基于STM32的鼠标程序

[复制链接]

该用户从未签到

21

主题

24

回帖

0

积分

二级逆天

积分
0

终身成就奖特殊贡献奖

发表于 2020-3-26 10:38:11 | 显示全部楼层 |阅读模式
#include <stm32f10x_lib.h>
#include "usb_pwr.h"      
//Mini STM32开发板

                        
void Load_Drow_Dialog(void)
{
    LCD_Clear(WHITE);//清屏   
     POINT_COLOR=BLUE;//设置字体为蓝色
    LCD_ShowString(216,0,"RST");//显示清屏区域
      POINT_COLOR=RED;//设置画笔蓝色
}                                
int main(void)
{   
    u8 key;
    u8 i=0;
    u8 tpx=0;   

    s8 x0;         //发送到电脑端的坐标值
    s8 y0;
    short xlast; //最后一次按下的坐标值
    short ylast;

     Stm32_Clock_Init(9);//系统时钟设置
    delay_init(72);        //延时初始化
    uart_init(72,9600); //串口1初始化        
    LCD_Init();            //初始化液晶         
    KEY_Init();            //按键初始化
    LED_Init();         //LED初始化
    //USB配置
    USB_Interrupts_Config();   
    Set_USBClock();   
    USB_Init();      

     POINT_COLOR=RED;//设置字体为蓝色      
    LCD_ShowString(60,50,"Mini STM32");   
    LCD_ShowString(60,70,"USB TEST");   
    LCD_ShowString(60,90,&quotress KEY0 to Adjust");   
    Touch_Init();
    delay_ms(1500);
    Load_Drow_Dialog();         
    while(1)
    {   
        key=KEY_Scan();
        tpx=AI_Read_TP();//得到触点的状态
        if(tpx)//触摸屏被按下                          
        {                                               
            xlast=Pen_Point.X0;
            ylast=Pen_Point.Y0;
            while(1)
            {
                tpx=AI_Read_TP();
                if(tpx==0)break;//触点松开了                             
                if(Pen_Point.X0>216&&ampen_Point.Y0<16)Load_Drow_Dialog();//清除
                else Draw_Big_Point(Pen_Point.X0,Pen_Point.Y0);//画图  
                if((Pen_Point.X0!=xlast||Pen_Point.Y0!=ylast)&&(bDeviceState==CONFIGURED)&&tpx==1)
                {
                    x0=(xlast-Pen_Point.X0)*3;//上次坐标值与得到的坐标值之差,扩大3倍
                    y0=(ylast-Pen_Point.Y0)*3;
                    xlast=Pen_Point.X0;          //记录本次的坐标值
                    ylast=Pen_Point.Y0;
                    Joystick_Send(0,-x0,-y0,0); //发送数据到电脑  
                    delay_ms(10);      
                }else if((bDeviceState==CONFIGURED)&&tpx==2)//单击
                {
                    tpx=0X01;
                    Joystick_Send(tpx,0,0,0);//模拟左键按下   
                }
                delay_us(50);
            }
            Joystick_Send(0,0,0,0);//发送左键松开
        }else delay_ms(1);     
        if(bDeviceState==CONFIGURED)LED1=0;//当USB配置成功了,LED1亮,否则,灭
        else LED1=1;
        if(key==1)//KEY0按下,则执行校准程序
        {
            LCD_Clear(WHITE);//清屏
            Touch_Adjust();  //屏幕校准
            Save_Adjdata();     
            Load_Drow_Dialog();
        }
        i++;
        if(i==200)
        {
            i=0;
            LED0=!LED0;
        }
    };                 
}  
回复

使用道具 举报

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

本版积分规则

论坛开启做任务可以
额外奖励金币快速赚
积分升级了


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

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

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