shuichan_new/STM32F103_App1/HardWare/RELAY/relay.h

94 lines
3.0 KiB
C
Raw Normal View History

#ifndef RELAY_H
#define RELAY_H
#include "main.h"
/* 4·<34>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŷ<EFBFBD><C5B6><EFBFBD>: PC2, PA1, PB12, PB1 (V1.7.0 <20>°<EFBFBD>) */
#define Relay1_Pin GPIO_PIN_2
#define Relay2_Pin GPIO_PIN_1
#define Relay3_Pin GPIO_PIN_12
#define Relay4_Pin GPIO_PIN_1
#define Relay1_Port GPIOC
#define Relay2_Port GPIOA
#define Relay3_Port GPIOB
#define Relay4_Port GPIOB
/* <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>: PC0, PC3, PC5, PB0 (V1.7.0 <20>°<EFBFBD>) */
#define Relay1_FB_Pin GPIO_PIN_0
#define Relay2_FB_Pin GPIO_PIN_3
#define Relay3_FB_Pin GPIO_PIN_5
#define Relay4_FB_Pin GPIO_PIN_0
#define Relay1_FB_Port GPIOC
#define Relay2_FB_Port GPIOC
#define Relay3_FB_Port GPIOC
#define Relay4_FB_Port GPIOB
/* <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><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><>ȡָ<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