| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- /*********************************************************************************************************
- * Module : key.c
- * Abstract : key modules,key be used to determing modebus address and It content interfaces of scankey to read!
- * Version : 1.0.0
- * Author : Leopul(COPYRIGHT 2025 - 2027 Leopul. All rights reserved.)
- * Complete : 2025-02-16
- * Content : None
- * Note : None
- *********************************************************************************************************/
- #include "Key.h"
- #include "gd32f30x_libopt.h"
- #define KEY_NAME_MAX 5
- #define KEY_1_RCU RCU_GPIOA
- #define KEY_1_IO GPIOA
- #define KEY_2_5_RCU RCU_GPIOB
- #define KEY_2_5_IO GPIOB
- #define KEY_ON 0
- #define KEY_OFF 1
- #define KEY1 GPIO_PIN_11
- #define KEY2 GPIO_PIN_15
- #define KEY3 GPIO_PIN_14
- #define KEY4 GPIO_PIN_13
- #define KEY5 GPIO_PIN_12
- static unsigned char s_arrKeyDownLevel[KEY_NAME_MAX];
- static void ConfigKeyGPIO(void);
- static void ConfigKeyGPIO(void)
- {
- rcu_periph_clock_enable(KEY_1_RCU); //ʹÄÜGPIOAµÄʱÖÓ
- rcu_periph_clock_enable(KEY_2_5_RCU);
-
- gpio_init(KEY_1_IO,GPIO_MODE_IPU,GPIO_OSPEED_50MHZ,KEY1);
- gpio_init(KEY_2_5_IO,GPIO_MODE_IPU,GPIO_OSPEED_50MHZ,KEY2);
- gpio_init(KEY_2_5_IO,GPIO_MODE_IPU,GPIO_OSPEED_50MHZ,KEY3);
- gpio_init(KEY_2_5_IO,GPIO_MODE_IPU,GPIO_OSPEED_50MHZ,KEY4);
- gpio_init(KEY_2_5_IO,GPIO_MODE_IPU,GPIO_OSPEED_50MHZ,KEY5);
- }
- void InitKey(void)
- {
- ConfigKeyGPIO();
- }
- unsigned char ScanKey(unsigned int gpio_periph,unsigned int pin)
- {
- if(gpio_input_bit_get(gpio_periph,pin)==0)
- return KEY_ON;
- else
- return KEY_OFF;
- }
- unsigned char ReadKeyValue(void)
- {
- static unsigned char SlaveAddress;
- s_arrKeyDownLevel[0]=ScanKey(KEY_1_IO,KEY1);
- s_arrKeyDownLevel[1]=ScanKey(KEY_2_5_IO,KEY2);
- s_arrKeyDownLevel[2]=ScanKey(KEY_2_5_IO,KEY3);
- s_arrKeyDownLevel[3]=ScanKey(KEY_2_5_IO,KEY4);
- s_arrKeyDownLevel[4]=ScanKey(KEY_2_5_IO,KEY5);
- SlaveAddress=(~((s_arrKeyDownLevel[4]<<4)|(s_arrKeyDownLevel[3]<<3)|(s_arrKeyDownLevel[2]<<2)|(s_arrKeyDownLevel[1]<<1)|s_arrKeyDownLevel[0]))&0x1f;
- return SlaveAddress;
- }
|