| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- /*********************************************************************************************************
- * 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_RCU RCU_GPIOE
- #define KEY_IO GPIOE
- #define KEY_ON 0
- #define KEY_OFF 1
- #define KEY1 GPIO_PIN_2
- #define KEY2 GPIO_PIN_3
- #define KEY3 GPIO_PIN_4
- #define KEY4 GPIO_PIN_5
- #define KEY5 GPIO_PIN_6
- static unsigned char s_arrKeyDownLevel[KEY_NAME_MAX];
- static void ConfigKeyGPIO(void);
- static void ConfigKeyGPIO(void)
- {
- rcu_periph_clock_enable(KEY_RCU); //ʹÄÜGPIOAµÄʱÖÓ
- gpio_init(KEY_IO,GPIO_MODE_IPU,GPIO_OSPEED_50MHZ,KEY1|KEY2|KEY3|KEY4|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_IO,KEY1);
- s_arrKeyDownLevel[1]=ScanKey(KEY_IO,KEY2);
- s_arrKeyDownLevel[2]=ScanKey(KEY_IO,KEY3);
- s_arrKeyDownLevel[3]=ScanKey(KEY_IO,KEY4);
- s_arrKeyDownLevel[4]=ScanKey(KEY_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;
- }
|