附件是用STM32F103实现的USB_HID有关游戏手柄的实现,希望对有相关需求的客户有所帮助
本程序能够模拟手柄基本功能的键,并可以做一般的游戏应用,增加了键盘扫描程序,不使用中断来处理。
将方向键换为摇杆来使用。 兼容win7
所有资料51hei提供下载:
stm32_手柄(增强版)VET6,兼容win7.rar
(982.69 KB, 下载次数: 115)
单片机源程序如下:
- #include "stm32f10x.h"
- #include "user_lib.h"
- #include "stdio.h"
- #include "usb_hw.h"
- #include "key.h"
- #include "adc.h"
- #include "termi.h"
- extern BYTE USB_Configuration;
- /**************************************************************************
- * 函数名 : GpioInitialisation
- * 函数描述 : 设置各GPIO端口功能
- * 输入参数 : 无
- * 输出结果 : 无
- * 返回值 : 无
- **************************************************************************/
- void GpioInitialisation(void)
- {
- /* 定义GPIO初始化结构体 GPIO_InitStructure*/
- GPIO_InitTypeDef GPIO_InitStructure;
-
- /* 打开APB2总线上的GPIOA时钟*/
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
-
- /* 设置 GPIOA0 , GPIOA1 为上拉输入 */
- GPIO_InitStructure.GPIO_Pin = KEYPIN;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
- GPIO_Init(KEYPORT, &GPIO_InitStructure);
-
- /* 设置 GPIOA4 ,GPIOA5 为推挽输出,最大翻转频率为50MHz*/
- // GPIO_InitStructure.GPIO_Pin = LED0PIN | LED1PIN;
- // GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- // GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- // GPIO_Init(LEDPORT, &GPIO_InitStructure);
- }
- int main(void)
- {
- /*此处与调试宏assert_param有关,在调试阶段不准删除*/
- GpioInitialisation();
- USART_Config();
-
- NVIC_Config();
- //EXTI_Config();
- key_init();
-
- USB_Init();
- USB_Connect(TRUE);
- /*等待USB枚举成功*/
- while (! USB_Configuration)
- ;
-
- termi_clr();
- printf("Hello\n");
-
-
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
|