5D摇杆模块(HAL)

  • 基本配置
  • 代码

基本配置

5D摇杆模块具有8个引脚,一个COM公共端,可以接GND或者VCC,剩下7个引脚分别为UP,DWN,LFT,RHT,MID,SET,RST,在对应按键按下后相应引脚会输出COM端所接电平。

代码

本代码引用正点原子按键例程代码。
首先是头文件

#ifndef __KEY_H
#define __KEY_H
#include "sys.h"
//下面的方式是通过直接操作 HAL 库函数方式读取 IO
#define UP  HAL_GPIO_ReadPin(GPIOG,GPIO_PIN_9) //UP 按键 PG9
#define DWN HAL_GPIO_ReadPin(GPIOG,GPIO_PIN_10) //DWN 按键 PG10
#define LFT HAL_GPIO_ReadPin(GPIOG,GPIO_PIN_11) //LFT 按键 PG11
#define RHT HAL_GPIO_ReadPin(GPIOG,GPIO_PIN_12) //RHT 按键 PG12
#define MID HAL_GPIO_ReadPin(GPIOG,GPIO_PIN_13) //MID 按键 PG13
#define SET HAL_GPIO_ReadPin(GPIOG,GPIO_PIN_14) //SET 按键 PG14
#define RST HAL_GPIO_ReadPin(GPIOG,GPIO_PIN_15) //RST 按键 PG15
#define UP_PRES  1
#define DWN_PRES 2
#define LFT_PRES 3
#define RHT_PRES 4
#define MID_PRES 5
#define SET_PRES 6
#define RST_PRES 7
void KEY_Init(void); //IO 初始化
u8 KEY_Scan(u8); //按键扫描函数
#endif

之后是源文件
引脚采用上拉输入,COM接GND,检测引脚低电平

#include "5d_key.h"
#include "delay.h"
//按键初始化函数
void KEY_Init(void)
{GPIO_InitTypeDef GPIO_InitStruct = {0};/* GPIO Ports Clock Enable */__HAL_RCC_GPIOG_CLK_ENABLE();/*Configure GPIO pins : PG9 PG10 PG11 PG12PG13 PG14 PG15 */GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15;GPIO_InitStruct.Mode = GPIO_MODE_INPUT;GPIO_InitStruct.Pull = GPIO_PULLUP;HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
}
//按键处理函数
//返回按键值
//mode:0,不支持连续按;1,支持连续按;
//0,没有任何按键按下
//1,WKUP 按下 WK_UP
//注意此函数有响应优先级,RST>DWN>LFT>RHT>MID>SET>UP
u8 KEY_Scan(u8 mode)
{static u8 key_up=1; //按键松开标志if(mode==1)key_up=1; //支持连按if(key_up==1&&(UP==0||DWN==0||LFT==0||RHT==0||MID==0||SET==0||RST==0)){delay_ms(10);key_up=0;if(RST==0) return RST_PRES;else if(DWN==0) return DWN_PRES;else if(LFT==0) return LFT_PRES;else if(RHT==0) return RHT_PRES; else if(MID==0) return MID_PRES;else if(SET==0) return SET_PRES;else if(UP==0)  return UP_PRES;}else if(UP==1&&DWN==1&&LFT==1&&RHT==1&&MID==1&&SET==1&&RST==1)key_up=1;return 0; //无按键按下
}

5D摇杆模块(HAL)相关推荐

  1. 「雕爷学编程」Arduino动手做(38)——joystick双轴摇杆模块

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...

  2. Arduino机器人快速上手经验分享(L298N马达驱动,摇杆模块)

    Bill of Material: 直流马达(<9V, 2A) x2, 底盘 x1,9V电池 x1, 电池扣 x1, 摇杆模块 x1, L298N 马达驱动模块 x1, Arduino Uno ...

  3. 【Android 10 源码】healthd 模块 HAL 2.0 分析

    Android 9 引入了从 health@1.0 HAL 升级的主要版本 android.hardware.health HAL 2.0.这一新 HAL 具有以下优势: 框架代码和供应商代码之间的区 ...

  4. ps2摇杆android图形编程,ROC-RK3308-CC开发实例总结--PS2 Joystick摇杆模块

    本帖最后由 Demon 于 2019-4-8 17:58 编辑 最近本人又调试了一款比较有趣的传感器模块--PS2  Joystick摇杆模块.下面将本人的测试方法分享于大家,下文仅个人见解,若有不足 ...

  5. 如何使用Arduino摇杆模块(Joystick Shield)

    在本篇文章中,我们将主要介绍如何使用Arduino摇杆模块(Joystick Shield).该扩展模块有不同的版本,我们使用的是v2.4,它有一些有趣的功能和一些按钮,可以在您的应用程序中以不同的方 ...

  6. 【stm32】摇杆模块利用stm32获取摇杆值

    目录 摇杆模块 接线 代码 ADC.C ADC.h main.c 摇杆模块 接线方式: GND.VCC(+5V)是供电端 VRx,VRy (X.Y轴)为模拟输入信号,连接到模拟IO口A0~A7. VR ...

  7. Arduino 使用 摇杆模块

    相关资料链接 点这里 1.1 介绍: 信号端X,Y接模拟口,原始状态下读出电压为VCC/2左右,当随箭头方向按下,读出电压值随着增加,最大到VCC,箭头相反方向按下,读出电压值减少,最小为0V:信号端 ...

  8. Switch配件joycon摇杆模块的各个IO定义和用法说明

    前言:前段时间在研究CH552G这个单片机,就浅浅的学了一下鼠标键盘的HID模拟,之后就在想着找个摇杆模块做个摇杆鼠标之类的,找来找去就找到了joycon的摇杆,有一说一这个小摇杆手感真的舒服,但是在 ...

  9. STM32摇杆模块的蓝牙通信+LCD图形化的坐标显示

    一.本次实验用到的器件:STM32C6T6最小系统板(连接摇杆模块),正点原子STM32ZET6精英板(蓝牙接收信号并实现LCD显示图像),两个HC-05模块,一个5针摇杆模块. 二.硬件连接:C6T ...

最新文章

  1. 独家 | 用pandas-profiling做出更好的探索性数据分析(附代码)
  2. 数据处理程序的一点经验
  3. html设置表格和div的距离,CSS/HTML Div调整大小和表格定位
  4. 千呼万唤始出来!诺基亚发预热海报:5摄手机真要来了
  5. 如何解决一些控件无法运行在高版本的Chrome下运行的问题
  6. c java long_C语言中输出long long型数据怎么输出
  7. python读取excel合并单元_python读取excel合并方法
  8. html给图片坐标没连接,4-HTML中的 a, img/标签使用及锚点,路径相关
  9. 用零知识证明连接多链宇宙
  10. hdu 1680 Cheesy Chess
  11. 选文字游戏 一个根据颜色来选择对应文字的小游戏
  12. Unity 汉诺塔Hannota笔记
  13. 小猿圈python学习-Selenium爬虫之使用代理ip的方法
  14. Python运算符与if结构
  15. %-3d 、 219、\1、%-5d、%-4d、%121d、%9.6f都是什么意思
  16. 哲学博士创立,创投教父投资,这家公司要冲击美股最大IPO了
  17. 暑期项目实训:基于webgl(three.js)的牙科数据可视化展示
  18. Axure RP 如何实现导航栏切换页面——母版
  19. BT151-ASEMI单向可控硅BT151参数、尺寸、规格
  20. 18.时钟芯片DS1302

热门文章

  1. 曹则贤:量子力学从来不是什么革命,而是经典物理学的自然延续
  2. tomcat搭建简易网站
  3. 计算机专业省赛一等奖有什么好处,省技能大赛一等奖好处都有什么
  4. PUK 码提示区分SIM卡(identification of blocked SIM)
  5. 有关ros kinetic无法安装报错unmet dependencies及解决
  6. 利用conda创建、激活和删除新环境。
  7. 我差点错过高校毕业生毕业之后这个3000元现金直接打入银行卡的补贴!
  8. 解决ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
  9. 用python 画太阳_Python PIL画一个太阳神的圆圈
  10. 服务IP(VIP)的作用