OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2645|回复: 5

战舰的游戏手柄咋样实现只有在建按下时才有相应的相应?

[复制链接]

3

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
273
金钱
273
注册时间
2016-1-27
在线时间
50 小时
发表于 2016-4-29 11:19:29 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 心静海 于 2016-5-3 21:03 编辑

求各位给点资源和建议
在下不胜感激#include "led.h"#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"
#include "joypad.h"
#include "beep.h"
#include "motor.h"
#include "timer.h"
/************************************************
ALIENTEK战舰STM32开发板实验29
游戏手柄 实验   
技术支持:www.openedv.com
淘宝店铺:http://eboard.taobao.com
关注微信公众平台微信号:"正点原子",免费获取STM32资料。
广州市星翼电子科技有限公司  
作者:正点原子 @ALIENTEK
************************************************/


const u8*JOYPAD_SYMBOL_TBL[8]=
{"Right=0","Left=1","Down=2","Up=3","Start=4","Select=5","B=6","A=7"};//手柄按键符号定义


int main(void)
{         
        u8 key;
        u8 i=0,t=0;
  u8 a=0;
        delay_init();                     //延时函数初始化         
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
        uart_init(115200);                 //串口初始化为115200
        LED_Init();                                  //初始化与LED连接的硬件接口
        LCD_Init();                                   //初始化LCD         
        JOYPAD_Init();                 //手柄初始化
        BEEP_Init();
        Motor_Init();
        TIM3_PWM_Init(1000,255);
         TIM2_PWM_Init(1000,99);        
         
         POINT_COLOR=GREEN;//设置字体为绿色
        LCD_ShowString(30,50,200,16,16,"WarShip STM32");        
        LCD_ShowString(30,70,200,16,16,"JOYPAD TEST");        
        LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
        LCD_ShowString(30,110,200,16,16,"2015/1/16");
  LCD_ShowString(30,130,200,16,16,"KEYVAL:");              
  LCD_ShowString(30,150,200,16,16,"SYMBOL:");              
         POINT_COLOR=BLUE;//设置字体为蓝色
          while(1)
        {
               
                key=JOYPAD_Read();
                if(key)
                {
                        LCD_ShowNum(116,130,key,3,16);//显示键
                        for(i=0;i<8;i++)
                        {
                                if(key&(0X80>>i))
                                
                                {
                                        LCD_Fill(30+56,150,30+56+48,150+16,WHITE);//清除之前的显示
                                        LCD_ShowString(30+56,150,200,16,16,(u8*)JOYPAD_SYMBOL_TBL);//显示符号
                                       
                                        if(i==0)
                                  {
                                                t++;
                                                if(t==1)
                                                {LED0=1;}
                                          delay_ms(10);
                                                if(t==2)
                                                {LED0=0;t=0;}

                                                LCD_ShowNum(116,230,a,3,16);//显示键

                                        }                        
                                   else if(i==1)
                                         {
                                                 LCD_ShowString        (30,170,200,16,16,"Is");
             LED0=!LED0; M1_1=0;M1_2=1;
                                         }
                                       
                                       
                                         else if(i==2)
                                        {
                                                LCD_ShowString        (30,170,200,16,16,"Really");
                                          LED1=1;   
                                        }
                                       
                                        else if(i==3)
                                        {
                                                LCD_ShowString        (30,170,200,16,16,"Simple");
                                          LED1=0;   
                                        }
                                       
                                         else if(i==7)
          {  
                                                
                                                a++;
                                                LCD_ShowNum(116,230,a,3,16);//显示键
                                                if(a==1)
                                         
                                                {M1_1=1;M1_2=0;        TIM_Cmd(TIM3, ENABLE);}   
                                                delay_ms(400);
                                                if(a<2)
                                                {M1_1=0;M1_2=0;        TIM_Cmd(TIM3, DISABLE);a=0;}
                                        }
                                       
                                       
                                       
                                       
                                       
                                       
                                       
                                  else {}
                                       
                                       
                                         
                                         
                                         
                                }        
                        }                    
                }
                 delay_ms(10);
                //t++;
                //if(t==20)
                {
                        //t=0;
                        //LED1=!LED1;
                }
   }
}


我只写了键七,响应会随着键的松开而停止




实验29 游戏手柄实验.zip

7.64 MB, 下载次数: 120

最佳答案

查看完整内容[请看2#楼]

本来就是要按下才有响应啊
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-4-29 11:19:30 | 显示全部楼层
本来就是要按下才有响应啊
回复

使用道具 举报

3

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
273
金钱
273
注册时间
2016-1-27
在线时间
50 小时
 楼主| 发表于 2016-5-1 15:51:46 | 显示全部楼层
但是板上代的是按下后再松开还会有响应
我想求一个仅仅在建按下时有响应而且响应会随着健的松开而结束
回复

使用道具 举报

3

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
273
金钱
273
注册时间
2016-1-27
在线时间
50 小时
 楼主| 发表于 2016-5-2 16:07:38 | 显示全部楼层
比如在按键按下时灯亮伴随着键的松开灯也会灭
求点意见
回复

使用道具 举报

3

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
273
金钱
273
注册时间
2016-1-27
在线时间
50 小时
 楼主| 发表于 2016-5-3 20:41:59 | 显示全部楼层
我弄出来了但是有点问题
附上代码
回复

使用道具 举报

0

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2019-11-10
在线时间
26 小时
发表于 2020-3-15 10:28:59 | 显示全部楼层
楼主你好,请问那个手柄按键的问题解决了吗,我现在也卡在了这里出不来了。。。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-22 15:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表