目录

一、硬件介绍

1、PS2手柄

2、PS2和STM32单片机控制板连接

二、程序设计

1、遥控手柄按键ID识别和命名

2、创建STM32程序工程

(1)工程创建

(2)Main程序

(3)PS2_Init()

(4)PS2_SetInit()

三、测试

四、工程下载连接


一、硬件介绍

1、PS2手柄

PS2无线手柄为2.4GHz无线通讯。常规的PS手柄如下,分为手柄和接收器

接收器的引进信号分布和说明如下:

该接收器的引脚可以使用杜邦线直接跟单片机,不过使用杜邦线插拔不方便,建议使用成品的接收器。

2、PS2和STM32单片机控制板连接

PS2接收器和单片机引脚连接

二、程序设计

1、遥控手柄按键ID识别和命名

(1)绿色字体为ID识别号

(2)红色字体为按键在程序中变量命名

(3)X和Y为的坐标系为单个摇杆的位置坐标系,摇杆在中间位置(静止无操作)坐标值为(128,128)

2、创建STM32程序工程

(1)工程创建

使用STM32读取MPU6050陀螺仪_Big_潘大师的博客-CSDN博客的工程,继续接下来的PS2工作。

在APP中添加PS2用户程序(网上直接找到的或者淘宝商家也提供测试)

ps2.h代码

(2)Main程序

#include "system.h"
#include "SysTick.h"
#include "SysDelay.h"
#include "led.h"
#include "i2c.h"
#include "mpu6050.h"
#include "usart.h"
#include "ps2.h"int PS2_LX,PS2_LY,PS2_RX,PS2_RY,PS2_KEY;int main()
{u8 count=0;u16 i=0;  SystemInit();               //系统初始化SysDelay_Init(72);           //自定义延时函数初始化LED_Init();USART1_Config();         //串口1初始化,上位机USART3_Config();         //串口3初始化-接蓝牙i2cInit();                  //IIC初始化SysDelay_ms(10);            //10毫秒延时MPU6050_Init();             //MPU6050 DMP陀螺仪初始化PS2_Init();                  //PS2驱动端口初始化PS2_SetInit();              //ps2配置初始化,配置“红绿灯模式”,并选择是否可以修改PS2_KEY=0;delay_ms(1000);while(1){/*LED灯闪烁*/   if(i%500==0){led1=!led1;}//2毫秒执行一次——串口打印if(i%2000==0){count++;printf("count:%d \r\n",count);printf("Pitch: %.2f ,Roll: %.2f,Yaw: %.2f \r\n",Pitch,Roll,Yaw);         //Pitch,Roll,Yaw数据传到串口printf("PS2按键:%d \r\n",PS2_KEY);     //打印按键的值printf("PS2左边x轴:%d \r\n",PS2_LX);   //打印左边X轴的值printf("PS2左边y轴:%d \r\n",PS2_LY);   //打印左边y轴的值printf("PS2右边x轴:%d \r\n",PS2_RX);   //打印右边X轴的值printf("PS2右边y轴:%d \r\n",PS2_RY);   //打印右边y轴的值}//20毫秒执行一次if(i%20==0){//获取摇杆数值PS2_LX=PS2_AnologData(PSS_LX);    PS2_LY=PS2_AnologData(PSS_LY);PS2_RX=PS2_AnologData(PSS_RX);PS2_RY=PS2_AnologData(PSS_RY);//获取按键值           PS2_KEY=PS2_DataKey();}/*获取MPU6050角度状态*///在串口数据发送之后MPU6050_Pose();                 //Pitch翻滚,Roll俯仰,Yaw偏航SysDelay_ms(1);                 //1毫秒延时i++;}
}

(3)PS2_Init()

手柄引脚初始化

void PS2_Init(void)
{RCC->APB2ENR|=1<<2;     //使能PORTA时钟GPIOA->CRL&=0XFFFF000F; //PA1 2 3推挽输出 GPIOA->CRL|=0X00003330;   GPIOA->CRL&=0XFFFFFFF0; GPIOA->CRL|=0X00000008; //PA0 设置成输入,默认下拉
}

(4)PS2_SetInit()

手柄配置初始化

void PS2_SetInit(void)
{PS2_ShortPoll();PS2_ShortPoll();PS2_ShortPoll();PS2_EnterConfing();            //进入配置模式PS2_TurnOnAnalogMode();     //红绿灯配置模式,并选择是否保存//PS2_VibrationMode();      //开启震动模式PS2_ExitConfing();          //完成并保存配置
}

三、测试

四、工程下载连接

https://download.csdn.net/download/panjinliang066333/86758071

STM32中使用PS2手柄相关推荐

  1. PS2手柄遥控Arduino小车

    使用手柄遥控小车是经常要用到的,看到PS2手柄很6,就拿来尝试一下. PS2手柄是索尼的PlayStation2游戏机的遥控手柄,因为这款手柄性价比较高,按键丰富,方便扩展到其它应用中,后来有人将其通 ...

  2. 小车主板哪家强?PS2手柄4路电机输出..火魔童主板了解一下?

    微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 最近收到了芯吧客邮寄的火魔童V1.0主板,今天简单给大家介绍一下 别的废话就不多说了, ...

  3. 亚博智能PS2手柄学习笔记

    一.PS2 手柄介绍: PS2 由手柄与接收器两部分组成,手柄主要负责发送按键信息.都接通电源并打开手柄开关时,手柄与接收器自动配对连接(这是由于手柄与接收器之间依靠2.4G进行通信),在未配对成功的 ...

  4. 基于UCOS-III的雷电传奇自制小游戏————秉火STM32F103-指南者;PS2手柄

    应实验课程要求,基于UCOS-III开发一款小游戏--雷电传奇.在此分享源代码,有相关注释,有些看不懂的欢迎随时交流. 硬件平台:秉火STM32F103-指南者,PS2手柄. 涉及内容:基于LCD屏幕 ...

  5. PS2手柄遥控控制灯开关(arduino)

    PS2手柄遥控控制灯开关(arduino) 使用的材料 arduino板子: ps2遥控手柄; 一个5V供电的LDE: 连线 首先按照遥控手柄底座上的英文,你会发现一共有六根线,分别是GND,VCC, ...

  6. PS2手柄代码移植-合泰平台

    PS2手柄代码移植-合泰平台 1.PS2手柄端口及通讯协议 PS2手柄的通讯协议是SPI协议是一种高速的.全双工.同步的通信总线,并且在芯片的管脚上只占用四根线(DI.DO.CS.CLK),PS2手柄 ...

  7. STM32中GPIO的8种工作模式

    一.推挽输出:可以输出高.低电平,连接数字器件:推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止.高低电平由IC的电源决定.形象点解释:推挽,就是有推有拉,任何 ...

  8. Arduino处理STM32中的多个串口通讯问题

    简 介: 对于在Arduino下开发STM32的程序,对于STM32所具有的三个硬件USART进行测测试.结果显示可以使用这些串口完成相应的数据的输入与输出.但是涉及到以下两个问题,还没有得到解决:问 ...

  9. STM32中GPIO的8种工作模式!

    一.推挽输出:可以输出高.低电平,连接数字器件:推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止.高低电平由IC的电源决定.         推挽电路是两个参数 ...

  10. STM32中IO口的8中工作模式

    该文摘自:http://blog.csdn.net/kevinhg/article/details/17490273 一.推挽输出:可以输出高.低电平,连接数字器件:推挽结构一般是指两个三极管分别受两 ...

最新文章

  1. 如何通过.reg文件来修改注册表键和子键以及键值
  2. git push 操作代码回退
  3. 【正一专栏】希望才是深深让人绝望的东西-论国足
  4. 还是分了的好——看惠普、赛门铁克拆分
  5. 软件工程与项目管理的关系_PM:软件项目管理概要
  6. ubuntu19.10安装codeblocks20.03
  7. servlet基础总结
  8. Leetcode--238. 除自身以外数组的乘积
  9. 移动端设备判断,ios,android,判断设备,安卓
  10. 使用.NET Core 2开发部署Angular 5项目
  11. oracle12c时间,Oracle 12c-选择冒号后的日期时间字符串
  12. nms python代码_?标检测中的?极?值抑制算法(nms):python代码解析
  13. client心跳 websocket_理解websocket的原理
  14. js中while死循环语句_如何检测JavaScript中的死循环?
  15. Spring Boot整合Swagger3配置全局Token
  16. spring boot 打war包部署,打jar包
  17. 更换固态硬盘和机械硬盘以及重装系统
  18. python 法律检索_Python爬虫进阶必备 | 某裁判文书检索网站加密分析与自动登录实现...
  19. Linux系统信息收集
  20. 前尘浮华一场梦 NOI2018 游记

热门文章

  1. Android8.1 源码添加黑名单拦截电话和短信记录
  2. HTML案例登录页面
  3. js 操作ntko控件实现编辑文档内容
  4. java后台开发程序媛~~
  5. 如何引入阿里矢量图标库彩色图标
  6. html+css+js 实现鼠标拖尾效果(源码)
  7. 2021年第十届“认证杯“数学中国数学建模国际赛(小美赛
  8. 帧数测试软件苹果,如何监视FPS(每秒帧数)在Mac OS X中进行石英调试 | MOS86
  9. 微信小程序 vs 支付宝小程序(钉钉小程序) 区别 api大全
  10. java 需求文档_java 项目需求文档要怎么写?