5D摇杆模块(HAL)
- 基本配置
- 代码
基本配置
5D摇杆模块具有8个引脚,一个COM公共端,可以接GND或者VCC,剩下7个引脚分别为UP,DWN,LFT,RHT,MID,SET,RST,在对应按键按下后相应引脚会输出COM端所接电平。
代码
本代码引用正点原子按键例程代码。
首先是头文件
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23#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,检测引脚低电平
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45#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 PG12 PG13 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)基本配置代码的全部内容,更多相关5D摇杆模块(HAL)基本配置代码内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复