123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419 |
- /*
- \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);
|