/* \version 2022-01-06, V2.2.0, firmware for GD32F3x0 */ #include "GLOBAL.h" #include "./mcu_sdk/zigbee.h" //directory by ddw #include "./mcu_sdk/protocol.h" //directory by ddw //#define SZ_DUBG_7KEY 1 //复位引脚 #define SET_RST() gpio_bit_write(GPIOB, GPIO_PIN_12, SET) #define CLR_RST() gpio_bit_write(GPIOB, GPIO_PIN_12, RESET) #define ZIGBEE_START() SET_RST() #define ZIGBEE_RST() CLR_RST() //LED1---LED8 端口控制 ////温控 #define SET_LED1() gpio_bit_write(GPIOB, GPIO_PIN_5, SET) #define CLR_LED1() gpio_bit_write(GPIOB, GPIO_PIN_5, RESET) #define SET_LED2() gpio_bit_write(GPIOB, GPIO_PIN_9, SET) #define CLR_LED2() gpio_bit_write(GPIOB, GPIO_PIN_9, RESET) #define SET_LED3() gpio_bit_write(GPIOA, GPIO_PIN_6, SET) #define CLR_LED3() gpio_bit_write(GPIOA, GPIO_PIN_6, RESET) #define SET_LED4() gpio_bit_write(GPIOA, GPIO_PIN_4, SET) #define CLR_LED4() gpio_bit_write(GPIOA, GPIO_PIN_4, RESET) #define KEY_D1_READ() gpio_input_bit_get(GPIOB, GPIO_PIN_6) #define KEY_D3_READ() gpio_input_bit_get(GPIOB, GPIO_PIN_8) #define KEY_D5_READ() gpio_input_bit_get(GPIOA, GPIO_PIN_7) #define KEY_D7_READ() gpio_input_bit_get(GPIOA, GPIO_PIN_5) //Reay control #define RELAY1_ON() gpio_bit_write(GPIOB, GPIO_PIN_4, SET) #define RELAY2_ON() gpio_bit_write(GPIOB, GPIO_PIN_3, SET) #define RELAY3_ON() gpio_bit_write(GPIOA, GPIO_PIN_15, SET) #define RELAY4_ON() gpio_bit_write(GPIOF, GPIO_PIN_6, SET) #define RELAY5_ON() gpio_bit_write(GPIOA, GPIO_PIN_11, SET) #define RELAY1_OFF() gpio_bit_write(GPIOB, GPIO_PIN_4, RESET) #define RELAY2_OFF() gpio_bit_write(GPIOB, GPIO_PIN_3, RESET) #define RELAY3_OFF() gpio_bit_write(GPIOA, GPIO_PIN_15, RESET) #define RELAY4_OFF() gpio_bit_write(GPIOF, GPIO_PIN_6, RESET) #define RELAY5_OFF() gpio_bit_write(GPIOA, GPIO_PIN_11, RESET) #define controll_on() RELAY5_ON() #define control2_on() RELAY4_ON() #define control3_on() RELAY3_ON() #define control4_on() RELAY2_ON() #define control5_on() RELAY1_ON() #define controll_off() RELAY5_OFF() #define control2_off() RELAY4_OFF() #define control3_off() RELAY3_OFF() #define control4_off() RELAY2_OFF() #define control5_off() RELAY1_OFF() //// //中山氛围灯 #define BLED1_ON() gpio_bit_write(GPIOB, GPIO_PIN_13, SET) #define BLED2_ON() BLED1_ON() #define BLED3_ON() BLED1_ON() #define BLED1_OFF() gpio_bit_write(GPIOB, GPIO_PIN_13, RESET) #define BLED2_OFF() BLED1_OFF() #define BLED3_OFF() BLED1_OFF() //蓝色LED控制 //点亮LED #define SET_BLED1() BLED1_ON() #define SET_BLED2() BLED1_ON() #define SET_BLED3() BLED1_ON() //熄灭LED,IO置高 #define CLR_BLED1() BLED1_OFF() #define CLR_BLED2() BLED1_OFF() #define CLR_BLED3() BLED1_OFF() //中山系列6键轻触开关 按键指示灯 /*******************************按键序号逆时针针1->4*********************************************** sku:2key-L SKU:2KEY-R SKU:4KEY sku:6key SW2(LED2) ** SW1(LED1) ** SW1(LED1) SW2(LED2) ** SW1(LED1) SW2(LED2) SW3(LED3) ** ** ** ** ** SW4(LED4) ** SW3(LED3) ** SW3(LED23 SW4(LED4) ** SW4(LED4) SW5(LED5) SW6(LED6) ** KEY1:PB8 KEY2:PB9 KEY3:PB3 KEY4:PA12 KEY5:PB12 KEY6:PB13 LED1:PC15 LED2:PC14 LED3:PC13 LED4:PB4 LED5:PB10 LED6:PB2 **********************************************************************************************/ // //中山系列6键轻触开关 按键指示灯 #define SET_D1_6key() gpio_bit_write(GPIOC, GPIO_PIN_15, SET) #define CLR_D1_6key() gpio_bit_write(GPIOC, GPIO_PIN_15, RESET) #define SET_D2_6key() gpio_bit_write(GPIOC, GPIO_PIN_14, SET) #define CLR_D2_6key() gpio_bit_write(GPIOC, GPIO_PIN_14, RESET) #define SET_D3_6key() gpio_bit_write(GPIOC, GPIO_PIN_13, SET) #define CLR_D3_6key() gpio_bit_write(GPIOC, GPIO_PIN_13, RESET) #define SET_D4_6key() gpio_bit_write(GPIOB, GPIO_PIN_4, SET) #define CLR_D4_6key() gpio_bit_write(GPIOB, GPIO_PIN_4, RESET) #define SET_D5_6key() gpio_bit_write(GPIOB, GPIO_PIN_10, SET) #define CLR_D5_6key() gpio_bit_write(GPIOB, GPIO_PIN_10, RESET) #define SET_D6_6key() gpio_bit_write(GPIOB, GPIO_PIN_2, SET) #define CLR_D6_6key() gpio_bit_write(GPIOB, GPIO_PIN_2, RESET) //中山系列6键轻触开关 按键指示灯 #define KEY_D1_T6_READ() gpio_input_bit_get(GPIOB, GPIO_PIN_8) #define KEY_D2_T6_READ() gpio_input_bit_get(GPIOB, GPIO_PIN_9) #define KEY_D3_T6_READ() gpio_input_bit_get(GPIOB, GPIO_PIN_3) #define KEY_D4_T6_READ() gpio_input_bit_get(GPIOA, GPIO_PIN_12) #define KEY_D5_T6_READ() gpio_input_bit_get(GPIOB, GPIO_PIN_12) #define KEY_D6_T6_READ() gpio_input_bit_get(GPIOB, GPIO_PIN_13) //中山系列6键轻触开关 按键读取 //中山按键-PET_TOUCH /*******************************按键序号逆时针针1->4*********************************************** sku:1key SKU:2KEY SKU:3KEY sku:4key ** D7(PD1)-1 ** D7(PD1)-1 ** D7(PD1)-KEY1 ** D6(PD2)-1 ** ** D2(PD3)-2 D4(PD1)-3 ** D1(PAD2)-2 D5(PAD3)-4 ** ** D3(PD4)-1 ** ** D3(PD4) -3 ** 改 KEY4 KEY1 KEY3 KEY2 PD1:PB8 PD2:PB9 PD3:PB3 PD4:PA12 D1:PB0 D2:PC14 D3:PC13 D4:PB1 D5:PB2 D6:PB4 D7:PC15 **********************************************************************************************/ // //中山系列4键触摸开关 按键指示灯 #define SET_D7_4Key() gpio_bit_write(GPIOC, GPIO_PIN_15, SET)// sku:4key #define CLR_D7_4Key() gpio_bit_write(GPIOC, GPIO_PIN_15, RESET) #define SET_D5_4key() gpio_bit_write(GPIOB, GPIO_PIN_2, SET) #define CLR_D5_4key() gpio_bit_write(GPIOB, GPIO_PIN_2, RESET) #define SET_D3_4key() gpio_bit_write(GPIOC, GPIO_PIN_13, SET) #define CLR_D3_4key() gpio_bit_write(GPIOC, GPIO_PIN_13, RESET) #define SET_D1_4key() gpio_bit_write(GPIOB, GPIO_PIN_0, SET) #define CLR_D1_4key() gpio_bit_write(GPIOB, GPIO_PIN_0, RESET) #define SET_D2_4key() gpio_bit_write(GPIOC, GPIO_PIN_14, SET) #define CLR_D2_4key() gpio_bit_write(GPIOC, GPIO_PIN_14, RESET) #define SET_D4_4key() gpio_bit_write(GPIOB, GPIO_PIN_1, SET) #define CLR_D4_4key() gpio_bit_write(GPIOB, GPIO_PIN_1, RESET) #define SET_D6_4key() gpio_bit_write(GPIOB, GPIO_PIN_4, SET) #define CLR_D6_4key() gpio_bit_write(GPIOB, GPIO_PIN_4, RESET) //中山系列4键触摸开关 按键指示灯 //臣仕C 按键 /*******************************按键序号逆时针1->4*********************************************** sku:1key SKU:2KEY SKU:3KEY sku:4key ** ** D5(SW5)-2 ** D4(SW4)-1 D5(SW5)-KEY2 ** ** ** ** ** D1(SW1)-1 ** D2(SW2) -1 D3(SW3)-2 ** D2(SW2)-1 D3(SW3)-3 ** D2(SW2)-3 D3(SW3)-4 ** SW1:PB8 SW2:PB9 SW3:PB3 SW4:PA12 SW5:PB12 D1:PC13 D2:PC14 D3:PC15 D4:PB4 D5:PB10 **********************************************************************************************/ //臣仕C系列4键轻触开关按键指示灯 #define SET_D5_C4Key() gpio_bit_write(GPIOB, GPIO_PIN_10, SET)// sku:4key #define CLR_D5_C4Key() gpio_bit_write(GPIOB, GPIO_PIN_10, RESET) #define SET_D3_C4key() gpio_bit_write(GPIOC, GPIO_PIN_15, SET) #define CLR_D3_C4key() gpio_bit_write(GPIOC, GPIO_PIN_15, RESET) #define SET_D2_C4key() gpio_bit_write(GPIOC, GPIO_PIN_14, SET) #define CLR_D2_C4key() gpio_bit_write(GPIOC, GPIO_PIN_14, RESET) #define SET_D4_C4key() gpio_bit_write(GPIOB, GPIO_PIN_4, SET) #define CLR_D4_C4key() gpio_bit_write(GPIOB, GPIO_PIN_4, RESET) #define SET_D1_C4key() gpio_bit_write(GPIOC, GPIO_PIN_13, SET) #define CLR_D1_C4key() gpio_bit_write(GPIOC, GPIO_PIN_13, RESET) //臣仕C系列4键轻触开关按键指示灯 //臣仕C系列4键轻触开关 // N L NULL L1 L2 L3 //Reay control ---无效指令,需对应修改 #define HIGH_RELAY3_ON() gpio_bit_write(GPIOA, GPIO_PIN_0, SET) #define LOW_RELAY3_ON() gpio_bit_write(GPIOA, GPIO_PIN_0, SET) #define HIGH_RELAY2_ON() gpio_bit_write(GPIOA, GPIO_PIN_0, SET) #define LOW_RELAY2_ON() gpio_bit_write(GPIOA, GPIO_PIN_0, SET) #define HIGH_RELAY1_ON() gpio_bit_write(GPIOA, GPIO_PIN_0, SET) #define LOW_RELAY1_ON() gpio_bit_write(GPIOA, GPIO_PIN_0, SET) #define HIGH_RELAY3_OFF() gpio_bit_write(GPIOA, GPIO_PIN_0, SET) #define LOW_RELAY3_OFF() gpio_bit_write(GPIOA, GPIO_PIN_0, SET) #define HIGH_RELAY2_OFF() gpio_bit_write(GPIOA, GPIO_PIN_0, SET) #define LOW_RELAY2_OFF() gpio_bit_write(GPIOA, GPIO_PIN_0, SET) #define HIGH_RELAY1_OFF() gpio_bit_write(GPIOA, GPIO_PIN_0, SET) #define LOW_RELAY1_OFF() gpio_bit_write(GPIOA, GPIO_PIN_0, SET) //中山REAY /*******************************按键序号顺时针1->4*********************************************** CAS1A PA0 CAS1B PA1 CAS2A PA4 CAS2B PA5 CAS3A PA7 CAS3B PA6 **********************************************************************************************/ //中山按键-PET_TOUCH /*******************************按键序号逆时针针1->4*********************************************** sku:1key SKU:2KEY SKU:3KEY sku:4key ** D7(PD1)-1 ** D7(PD1)-1 ** D7(PD1)-KEY1 ** D6(PD2)-1 ** ** D2(PD3)-2 D4(PD1)-3 ** D1(PAD2)-2 D5(PAD3)-4 ** ** D3(PD4)-1 ** ** D3(PD4) -3 ** 改 KEY4 KEY1 KEY3 KEY2 PD1:PB8 PD2:PB9 PD3:PB3 PD4:PA12 D1:PB0 D2:PC14 D3:PC13 D4:PB1 D5:PB2 D6:PB4 D7:PC15 **********************************************************************************************/ // //Key read //中山系列4键触摸开关 #ifdef SZ_DUBG_7KEY //调试阶段采用7按键一体PET触摸 #define KEY_D7_T4_READ() gpio_input_bit_get(GPIOB, GPIO_PIN_8)//按照sku:4key做的定义,中山 #define KEY_D5_T4_READ() gpio_input_bit_get(GPIOB, GPIO_PIN_3) #define KEY_D3_T4_READ() gpio_input_bit_get(GPIOA, GPIO_PIN_12) #define KEY_D1_T4_READ() gpio_input_bit_get(GPIOB, GPIO_PIN_9) #define KEY_D2_T4_READ() gpio_input_bit_get(GPIOB, GPIO_PIN_3) #define KEY_D4_T4_READ() gpio_input_bit_get(GPIOB, GPIO_PIN_8) #define KEY_D6_T4_READ() gpio_input_bit_get(GPIOB, GPIO_PIN_9) #else//1和3键共用,2和4键共用PET触摸 #define KEY_D7_T4_READ() gpio_input_bit_get(GPIOB, GPIO_PIN_9)//按照sku:4key做的定义,中山 #define KEY_D5_T4_READ() gpio_input_bit_get(GPIOB, GPIO_PIN_8) #define KEY_D3_T4_READ() gpio_input_bit_get(GPIOA, GPIO_PIN_12) #define KEY_D1_T4_READ() gpio_input_bit_get(GPIOB, GPIO_PIN_3) #define KEY_D2_T4_READ() gpio_input_bit_get(GPIOA, GPIO_PIN_12) #define KEY_D4_T4_READ() gpio_input_bit_get(GPIOB, GPIO_PIN_8) #define KEY_D6_T4_READ() gpio_input_bit_get(GPIOB, GPIO_PIN_3) #endif //臣仕C 按键 /*******************************按键序号逆时针1->4*********************************************** sku:1key SKU:2KEY SKU:3KEY sku:4key ** ** D5(SW5)-2 ** D4(SW4)-1 D5(SW5)-KEY2 ** ** ** ** ** D1(SW1)-1 ** D2(SW2) -1 D3(SW3)-2 ** D2(SW2)-1 D3(SW3)-3 ** D2(SW2)-3 D3(SW3)-4 ** SW1:PB8 SW2:PB9 SW3:PB3 SW4:PA12 SW5:PB12 D1:PC13 D2:PC14 D3:PC15 D4:PB4 D5:PB10 **********************************************************************************************/ //根据不同PCB版重定义按键引脚关系 //臣仕C系列4键轻触开关 #define KEY_D5_C4_READ() gpio_input_bit_get(GPIOB, GPIO_PIN_12)//按照sku:4key做的定义 #define KEY_D3_C4_READ() gpio_input_bit_get(GPIOB, GPIO_PIN_3) #define KEY_D2_C4_READ() gpio_input_bit_get(GPIOB, GPIO_PIN_9) #define KEY_D4_C4_READ() gpio_input_bit_get(GPIOA, GPIO_PIN_12) #define KEY_D1_C4_READ() gpio_input_bit_get(GPIOB, GPIO_PIN_8) //臣仕L系列8键轻触开关 #define KEY1_L8_READ() gpio_input_bit_get(GPIOB, GPIO_PIN_8) #define KEY2_L8_READ() gpio_input_bit_get(GPIOB, GPIO_PIN_9) #define KEY3_L8_READ() gpio_input_bit_get(GPIOB, GPIO_PIN_3) #define KEY4_L8_READ() gpio_input_bit_get(GPIOA, GPIO_PIN_12) #define KEY5_L8_READ() gpio_input_bit_get(GPIOB, GPIO_PIN_12) #define KEY6_L8_READ() gpio_input_bit_get(GPIOB, GPIO_PIN_13) #define KEY7_L8_READ() gpio_input_bit_get(GPIOB, GPIO_PIN_15) #define KEY8_L8_READ() gpio_input_bit_get(GPIOB, GPIO_PIN_14) //根据不同PCB版重定义按键引脚关系 //Zero read #define ZERO_READ() gpio_input_bit_get(GPIOA, GPIO_PIN_8) //Human sensor #define RADAR_READ() gpio_input_bit_get(GPIOB, GPIO_PIN_5)//09 ddw #define MOTOR_ON() gpio_bit_write(GPIOA, GPIO_PIN_11, SET) #define MOTOR_OFF() gpio_bit_write(GPIOA, GPIO_PIN_11, RESET) ///add by zzw #define LONG_KEY_MASK 0x80 // 长按键掩码 #define SHORT_KEY_MASK 0x7f // 短按键掩码 #define NO_KEY_MSG 0xff // 无按键消息 #define KEY_MAX_NUM 1*8 // 键盘最大键数 #define KEYBUFLENGTH 8 #define KEY1 0x01 // #define KEY2 0x02 // #define KEY3 0x03 // #define KEY4 0x04 // #define KEY5 0x05 // #define KEY6 0x06 // #define KEY7 0x07 // #define KEY8 0x08 // typedef struct __KEY_STRUCT { byte bKey; word wKeyTime; }sKey; typedef struct _SSCKAN_KEY // 键盘扫描数据结构体 { WORD key_l; // 键按下记时器低位 WORD key_h; // 键按下记时器高位 byte KeyPrsTurn; // 键按下计数器 byte KeyInpush; // 按键扫描录入键值 byte KeyPrsed; // 键按下标志 byte KeyIn; // 键盘扫描键值 }SScanKey; extern volatile sKey KeyCodeBuf[KEYBUFLENGTH]; extern volatile UCHAR KeyCodeHead,KeyCodeTail; extern SScanKey sScanKey[KEY_MAX_NUM]; //void KeyboardInit(void); byte GetKey(word *wTime); void ScanKey( void ); typedef struct __LED_TIMER { u08 ticket; u08 period; u08 ledOnTime; } ledTimer_t; void ledSetParam(u08 onCycle, u08 ledCycle); void ledCtrlProc(void); ////add by zzw void relay_ctl(void); void gpio_ctl_config(void); void key_wakeup_interrupt_config(void); void key_scan_fun(void); void key_led_ctl(void); void blue_led_ctl(void); void key_led_ctl_zhongS(void); void blue_led_ctl_zhongS(void); extern FlagStatus KEY1_READ(void); extern FlagStatus KEY2_READ(void); extern FlagStatus KEY3_READ(void); extern FlagStatus KEY4_READ(void); extern FlagStatus KEY5_READ(void); extern FlagStatus KEY6_READ(void); extern FlagStatus KEY7_READ(void); extern FlagStatus KEY8_READ(void); void key1_led_control(byte state); void key2_led_control(byte state); void key3_led_control(byte state); void key4_led_control(byte state); void key5_led_control(byte state); void key6_led_control(byte state);