102 lines
3.2 KiB
C
102 lines
3.2 KiB
C
|
|
#ifndef RELAY_H
|
|||
|
|
#define RELAY_H
|
|||
|
|
|
|||
|
|
#include "main.h"
|
|||
|
|
|
|||
|
|
/* 4·<34>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>: PB7, PB8, PC0, PC2 */
|
|||
|
|
#define Relay1_Pin GPIO_PIN_7
|
|||
|
|
#define Relay2_Pin GPIO_PIN_8
|
|||
|
|
#define Relay3_Pin GPIO_PIN_0
|
|||
|
|
#define Relay4_Pin GPIO_PIN_2
|
|||
|
|
|
|||
|
|
#define Relay1_Port GPIOB
|
|||
|
|
#define Relay2_Port GPIOB
|
|||
|
|
#define Relay3_Port GPIOC
|
|||
|
|
#define Relay4_Port GPIOC
|
|||
|
|
|
|||
|
|
/* <20>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƺ<EFBFBD>, <20>ߵ<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>, <20>͵<EFBFBD>ƽ<EFBFBD>ͷ<EFBFBD> */
|
|||
|
|
#define Relay1_ON HAL_GPIO_WritePin(Relay1_Port, Relay1_Pin, GPIO_PIN_SET)
|
|||
|
|
#define Relay1_OFF HAL_GPIO_WritePin(Relay1_Port, Relay1_Pin, GPIO_PIN_RESET)
|
|||
|
|
#define Relay2_ON HAL_GPIO_WritePin(Relay2_Port, Relay2_Pin, GPIO_PIN_SET)
|
|||
|
|
#define Relay2_OFF HAL_GPIO_WritePin(Relay2_Port, Relay2_Pin, GPIO_PIN_RESET)
|
|||
|
|
#define Relay3_ON HAL_GPIO_WritePin(Relay3_Port, Relay3_Pin, GPIO_PIN_SET)
|
|||
|
|
#define Relay3_OFF HAL_GPIO_WritePin(Relay3_Port, Relay3_Pin, GPIO_PIN_RESET)
|
|||
|
|
#define Relay4_ON HAL_GPIO_WritePin(Relay4_Port, Relay4_Pin, GPIO_PIN_SET)
|
|||
|
|
#define Relay4_OFF HAL_GPIO_WritePin(Relay4_Port, Relay4_Pin, GPIO_PIN_RESET)
|
|||
|
|
|
|||
|
|
/* 4·<34>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>: PB6, PB9, PC1, PC3 */
|
|||
|
|
#define Relay1_FB_Pin GPIO_PIN_6
|
|||
|
|
#define Relay2_FB_Pin GPIO_PIN_9
|
|||
|
|
#define Relay3_FB_Pin GPIO_PIN_1
|
|||
|
|
#define Relay4_FB_Pin GPIO_PIN_3
|
|||
|
|
|
|||
|
|
#define Relay1_FB_Port GPIOB
|
|||
|
|
#define Relay2_FB_Port GPIOB
|
|||
|
|
#define Relay3_FB_Port GPIOC
|
|||
|
|
#define Relay4_FB_Port GPIOC
|
|||
|
|
|
|||
|
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>: <20>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϻ<EFBFBD><CFBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ, <20>ͷź<CDB7><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ƽ */
|
|||
|
|
#define FB_ACTIVE GPIO_PIN_SET
|
|||
|
|
#define FB_INACTIVE GPIO_PIN_RESET
|
|||
|
|
|
|||
|
|
/* <20>ֶ<EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: PA8, <20>ߵ<EFBFBD>ƽ=<3D>ֶ<EFBFBD>ģʽ, <20>͵<EFBFBD>ƽ=<3D><><EFBFBD><EFBFBD>ģʽ */
|
|||
|
|
#define MANUAL_MODE_Pin GPIO_PIN_8
|
|||
|
|
#define MANUAL_MODE_Port GPIOA
|
|||
|
|
#define MANUAL_MODE_ACTIVE GPIO_PIN_SET
|
|||
|
|
|
|||
|
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܿ<EFBFBD><DCBF><EFBFBD>: 0=<3D><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
#define RELAY_FB_ENABLE 1
|
|||
|
|
|
|||
|
|
/* <20>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬ö<CCAC><C3B6> */
|
|||
|
|
typedef enum {
|
|||
|
|
RELAY_OK = 0, /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
RELAY_FAIL_OPEN, /* <20><><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
RELAY_FAIL_STUCK, /* <20><><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD> */
|
|||
|
|
RELAY_UNKNOWN /* δ֪״̬ */
|
|||
|
|
} RelayStatus;
|
|||
|
|
|
|||
|
|
/* <20>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC> */
|
|||
|
|
void relayInit(void);
|
|||
|
|
|
|||
|
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳɹ<D3B3><C9B9><EFBFBD>, <20><> EEPROM <20>ָ<EFBFBD><D6B8>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>״̬ */
|
|||
|
|
void relayRestoreState(void);
|
|||
|
|
|
|||
|
|
/* ִ<><D6B4>MQTT<54>·<EFBFBD><C2B7>ļ̵<C4BC><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
void relayAction(uint8_t *data);
|
|||
|
|
#define relay_action relayAction
|
|||
|
|
|
|||
|
|
/* <20>ϱ<EFBFBD><CFB1>̵<EFBFBD><CCB5><EFBFBD>״̬<D7B4><CCAC>ƽ̨ */
|
|||
|
|
void relayStatueUpdata(void);
|
|||
|
|
|
|||
|
|
/* <20><>ȡ PA8 <20>ֶ<EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>: 1=<3D>ֶ<EFBFBD>ģʽ, 0=<3D><><EFBFBD><EFBFBD>ģʽ */
|
|||
|
|
int relayIsManualMode(void);
|
|||
|
|
|
|||
|
|
/* <20><>ȡָ<C8A1><D6B8><EFBFBD>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭʼ<D4AD><CABC>ƽ */
|
|||
|
|
GPIO_PinState relayReadFb(uint8_t ch);
|
|||
|
|
|
|||
|
|
/* <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ֻд GPIO + Relay_State<74><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD> EEPROM/<2F><><EFBFBD>磩 */
|
|||
|
|
void relaySet(uint8_t ch, uint8_t on);
|
|||
|
|
|
|||
|
|
/* <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>״̬<D7B4>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD> relay_report_pending<6E><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD>ʱͳһ<CDB3>ϱ<EFBFBD><CFB1><EFBFBD> */
|
|||
|
|
void relayRequestReport(void);
|
|||
|
|
|
|||
|
|
/* <20><><EFBFBD><EFBFBD>ִ<EFBFBD>к<EFBFBD>״̬<D7B4>ϱ<EFBFBD><CFB1><EFBFBD>־, <20><>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2B5BD><EFBFBD><EFBFBD>ʱ<EFBFBD>ϱ<EFBFBD> */
|
|||
|
|
extern volatile uint8_t relay_report_pending;
|
|||
|
|
extern volatile uint32_t relay_report_tick;
|
|||
|
|
|
|||
|
|
/* <20>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ο<D7B6><CEBF><EFBFBD>:
|
|||
|
|
0: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
1: <EFBFBD>Ѷ<EFBFBD><EFBFBD><EFBFBD>, <EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>
|
|||
|
|
2: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѷ<EFBFBD>, <EFBFBD>ѷ<EFBFBD><EFBFBD><EFBFBD> response <EFBFBD><EFBFBD> status, <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
extern volatile uint8_t relay_cmd_stage;
|
|||
|
|
extern volatile uint32_t relay_cmd_tick;
|
|||
|
|
extern volatile uint8_t relay_cmd_ch;
|
|||
|
|
extern volatile GPIO_PinState relay_cmd_fb_before;
|
|||
|
|
extern char relay_cmd_id[20];
|
|||
|
|
|
|||
|
|
/* <20><><EFBFBD>м̵<D0BC><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>ÿ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD> */
|
|||
|
|
void relayCmdProcess(void);
|
|||
|
|
|
|||
|
|
#endif
|