STM32中使用PS2手柄

这篇具有很好参考价值的文章主要介绍了STM32中使用PS2手柄。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、硬件介绍

1、PS2手柄

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

 二、程序设计

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

 2、创建STM32程序工程

(1)工程创建

 (2)Main程序

(3)PS2_Init()

(4)PS2_SetInit()

三、测试

四、工程下载连接


一、硬件介绍

1、PS2手柄

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

stm32 游戏手柄,STM32,单片机,stm32,PS2手柄

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

stm32 游戏手柄,STM32,单片机,stm32,PS2手柄


stm32 游戏手柄,STM32,单片机,stm32,PS2手柄

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

stm32 游戏手柄,STM32,单片机,stm32,PS2手柄

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

stm32 游戏手柄,STM32,单片机,stm32,PS2手柄

 文章来源地址https://www.toymoban.com/news/detail-784907.html

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

stm32 游戏手柄,STM32,单片机,stm32,PS2手柄

 二、程序设计

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

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

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

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

stm32 游戏手柄,STM32,单片机,stm32,PS2手柄

 2、创建STM32程序工程

(1)工程创建

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

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

stm32 游戏手柄,STM32,单片机,stm32,PS2手柄

ps2.h代码

stm32 游戏手柄,STM32,单片机,stm32,PS2手柄

 (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();		    //完成并保存配置
}

三、测试

stm32 游戏手柄,STM32,单片机,stm32,PS2手柄

 

四、工程下载连接

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

 

到了这里,关于STM32中使用PS2手柄的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用STM32CubeProgrammer工具读取单片机Flash数据读取

    本文主要介绍,如何使用STM32CubeProgrammer工具读取和写入单片机Flash内部的数据,方便调试使用。 2.1 连接Stlink和单片机,点击“connect”进行连接 2.2 读取固定长度的数据 根据程序的大小,设置需要读取的字节数,如下图所示。点击“read”将单片机Flash中的数据读取到STM32Cube

    2024年02月12日
    浏览(29)
  • 使用vscode + gcc进行 STM32 单片机开发(一)编译及调试

    众所周知,单片机MCU的开发通常是使用keil来进行的,但是keil作为一款有几十年历史的IDE,bug层出不穷,界面也越来越丑,加上使用盗版jlink,导致keil各种崩溃卡死。 故越来越多的单片机IDE也如雨后春笋般冒出,例如 st官方出版的st studio、rt-thread出版的rt-studio,至于好不好用

    2023年04月08日
    浏览(37)
  • 使用DMA传输实现单片机高效串口转发——以STM32系列为例

    Date Author Version Note 2023.08.06 Dog Tao V1.0 1. 完成了文档的撰写。 2023.08.23 Dog Tao V1.1 1. 增加了STM32F103-USART2的DMA传输配置示例。 2. 增加了STM32F103与F407单片机的DMA控制器介绍并更改了第一章节的结构。 应用场景 在许多现实应用场景中,例如工业自动化控制、嵌入式通信设备等领域,

    2024年02月14日
    浏览(28)
  • STM32单片机(一)STM32简介

    ❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋

    2024年02月10日
    浏览(45)
  • STM32单片机开发-01 STM32介绍

    通过野火开发板学习单片机 从内核上分有Cortex-M0、M3、M4 和M7 F1 代表了基础型,基于Cortex-M3 内核,主频为72MHZ F4 代表了高性能,基于Cortex-M4 内核,主频180M。 数据手册:用于芯片选型和设计原理图 参考手册:用于编程时查阅 Icode总线 – 该总线讲M3内核的指令总线与闪存指令

    2024年01月21日
    浏览(44)
  • STM32单片机(二)STM32环境搭建

    ❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋

    2024年02月10日
    浏览(48)
  • J-LINK J-FLASH 下载STM32单片机程序使用教程

    J-LINK J-FLASH 下载程序使用教程 -V1.0 2023.05.09 Introduction 本教程用于演示如何使用JLINK V9配套J-FLASH软件烧写更新MCU程序的教程 安装提供的 JLINK驱动程序。JLink_Windows_V722a.rar。全程默认安装,只能安装在C盘,不可安装于其它盘。 安装驱动完成后,将JLINK V9仿真器上USB口插上电脑,

    2024年02月11日
    浏览(34)
  • 【STM32】STM32单片机结构及部件原理

    STM32是目前比较常见并且多功能的单片机,要想学习STM32,首先要去了解它的基本构成部分以及各部分的原理。 单片机型号:正点原子STM32F103ZET6 目录 STM32内部结构总览图: 2.内部结构解析         1.内核 :STM32F103ZET6采用的是 ARM Cortex-M3 处理器,内核可以理解为单片机 处

    2023年04月08日
    浏览(33)
  • STM32单片机学习3--STM32控制键盘

    单片机型号:STM32F103C8T6 开发环境:Keil5 4种输入模式 上拉输入模式:在默认状态下(GPIO引脚无输入),读取得的GPIO引脚数据为1,高电平(与Vdd相连的为上拉电阻); 下拉输入模式:在默认状态下(GPIO引脚无输入),读取得的GPIO引脚数据为0,低电平(与Vss相连的为下拉电

    2024年02月10日
    浏览(41)
  • STM32单片机学习4--STM32控制八段码

    数码管:实际上是多个LED按照一定顺序排列,并加上遮罩所构成的元件。 八段码一般会引出9个引脚,其中7个引脚显示数字(或某些字母),1个显示小数点,1个作为片选端。 根据连接方式的不同,数码管分为 共阳 和 共阴 。 共阳在这端输出低电平时点亮,高电平时会熄灭

    2024年01月23日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包