forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-06-19 6e3f1f560d618b37ee1a47fa2b0f682b70c3ef1c
Function/FLOW_METER_DATA_COLLECT/rs485_read_data.h
@@ -2,26 +2,133 @@
#define _RS485_READ_DATA_H_
#include "define_all.h"
#include "system_general_para.h"
#define RS485_SEND_NORMAL(__DATA__,__SIZE__)    do{RS485_RE_SEND_ENABLE;UARTx_SendData_Normal(RS485_READ_DATA_UARTX,__DATA__,__SIZE__);delay_us(10);RS485_RE_REC_ENABLE;}while(0)
#define      RS485_REREAD_NUM   3
#define      RS485_REREAD_WATI_TIME   3
//#define      RS485_PWR_DELAY_TIME    30
/****IO¶¨Òå****/
//RS485ÊÇ·ñ±»Õ¼ÓÃÅж¨Òý½Å
#define RS485_SYNC_PORT    GPIOE
#define RS485_SYNC_PIN       GPIO_Pin_2
#define RS485_SYNC_IO_READ   GPIO_ReadInputDataBit(RS485_SYNC_PORT, RS485_SYNC_PIN)
//RS485оƬ¹©µç
#define RS485_PWR_PORT    GPIOA
#define RS485_PWR_PIN       GPIO_Pin_15
#define RS485_PWR_ON      GPIO_SetBits(RS485_PWR_PORT,RS485_PWR_PIN)
#define RS485_PWR_OFF      GPIO_ResetBits(RS485_PWR_PORT,RS485_PWR_PIN)
//RS485ÊÕ·¢Ê¹ÄÜ
#define RS485_RE_PORT    GPIOA
#define RS485_RE_PIN       GPIO_Pin_14
#define RS485_RE_SEND_ENABLE      GPIO_SetBits(RS485_RE_PORT,RS485_RE_PIN)
#define RS485_RE_REC_ENABLE      GPIO_ResetBits(RS485_RE_PORT,RS485_RE_PIN)
//¶ÔÍ⹩µç¿ØÖÆIO
#define PWR_OUTPUT1_PORT    GPIOB
#define PWR_OUTPUT1_PIN       GPIO_Pin_11
#define PWR_OUTPUT1_ON      GPIO_SetBits(PWR_OUTPUT1_PORT,PWR_OUTPUT1_PIN)
#define PWR_OUTPUT1_OFF      GPIO_ResetBits(PWR_OUTPUT1_PORT,PWR_OUTPUT1_PIN)
#define PWR_OUTPUT2_PORT    GPIOB
#define PWR_OUTPUT2_PIN       GPIO_Pin_12
#define PWR_OUTPUT2_ON      GPIO_SetBits(PWR_OUTPUT2_PORT,PWR_OUTPUT2_PIN)
#define PWR_OUTPUT2_OFF      GPIO_ResetBits(PWR_OUTPUT2_PORT,PWR_OUTPUT2_PIN)
#define PWR_OUTPUT_9V_PORT    GPIOB
#define PWR_OUTPUT_9V_PIN    GPIO_Pin_14
#define PWR_OUTPUT_9V_ON      GPIO_SetBits(PWR_OUTPUT_9V_PORT,PWR_OUTPUT_9V_PIN)
#define PWR_OUTPUT_9V_OFF      GPIO_ResetBits(PWR_OUTPUT_9V_PORT,PWR_OUTPUT_9V_PIN)
#define PWR_OUTPUT_12V_PORT    GPIOB
#define PWR_OUTPUT_12V_PIN    GPIO_Pin_15
#define PWR_OUTPUT_12V_ON      GPIO_SetBits(PWR_OUTPUT_12V_PORT,PWR_OUTPUT_12V_PIN)
#define PWR_OUTPUT_12V_OFF      GPIO_ResetBits(PWR_OUTPUT_12V_PORT,PWR_OUTPUT_12V_PIN)
#define PWR_BOOST_EN_PORT    GPIOB
#define PWR_BOOST_EN_PIN       GPIO_Pin_13
#define PWR_BOOST_ENABLE      GPIO_SetBits(PWR_BOOST_EN_PORT,PWR_BOOST_EN_PIN)
#define PWR_BOOST_DIABLE      GPIO_ResetBits(PWR_BOOST_EN_PORT,PWR_BOOST_EN_PIN)
typedef enum
{
  RS485_COM_IDLE = 0U,
   RS485_COM_PWR_ON,
//   RS485_COM_PWR_WAIT,
   RS485_COM_SEND,
   RS485_COM_WAIT_ANSWER,
   RS485_COM_TIMEOUT,
   RS485_COM_OFF
//   RS485_COM_PASS,         //×îÖճɹ¦×´Ì¬£¬¿ÉÒÔ½øÐгɹ¦´¦Àí£¬´¦ÀíÍê±ÏÖ®ºóÔÙת³ÉIDLE״̬
//   RS485_COM_TIMEOUT,
//   RS485_COM_OFF
   
} RS485_COM_STATUS_T; // ·§ÃÅ״̬ÀàÐÍ
} RS485_COM_STATUS_T; // RS485¹¤×÷״̬ÀàÐÍ,״̬»úÿ´ÎÇл»¶¼ÒªµÈÒ»¸ö¹¤×÷ÖÜÆÚ£¬ÎªÁ˽Úʡʱ¼ä£¬Ö»ÓÃ3¸ö״̬
#define   RS485_COM_REC_BUF_LENGTH   256
typedef struct{
   uint8_t  recv_buf[RS485_COM_REC_BUF_LENGTH];
   uint16_t recv_length;
  FlagStatus recv_flag;
}RS485_COM_UART_PARA_T;
typedef enum
{
  RS485_V1_5V = 0x0U,
   RS485_V1_9V = 0x1U,
   RS485_V1_12V = 0x2U,
   RS485_V2_5V = 0x10U,
} RS485_PWR_OUTPUT_SELECT; //
typedef enum
{
  STEP_NONE = 0U,
   MODBUS_STEP1,
   MODBUS_STEP2,
   MODBUS_STEP3,
   MODBUS_STEP4,
   MODBUS_STEP5,
   MODBUS_STEP6,
} RS485_MODBUS_STEP_STATUS_T; //
typedef struct{
   RS485_COM_STATUS_T  status ;   //
   uint8_t                   reread_num_cnt ;    //ÖØ¶Á´ÎÊý¼ÆÊý
   uint8_t                  reread_wait_time_cnt;    //ÖØ¶ÁµÈ´ýʱ¼ä¼ÆÊý
   FlagStatus               pwr_delay_status;  //¹©µçµÈ´ý״̬
   uint8_t                   pwr_delay_time_out_cnt; //¹©µçµÈ´ý¼ÆÊý
   RS485_MODBUS_STEP_STATUS_T   modbus_step_status;  //ÓÃÓÚmodbusµØÖ··ÖµÄ±È½Ï¿ª£¬²»ÄÜÒ»´ÎÐÔ¶ÁÈ¡µÄÇé¿ö£¬ÐèÒª·Ö¶à´Î¶ÁÈ¡
   RS485_MODBUS_STEP_STATUS_T   modbus_last_status;  //ÓÃÓÚmodbusµØÖ··ÖµÄ±È½Ï¿ª£¬²»ÄÜÒ»´ÎÐÔ¶ÁÈ¡µÄÇé¿ö£¬ÐèÒª·Ö¶à´Î¶ÁÈ¡
}RS485_COM_CTRL_PARA_T;
extern __IO  RS485_COM_STATUS_T   rs485_com_status_g;
void rs485ReadDataPro(void);
extern RS485_COM_UART_PARA_T   rs485_com_uart_data_g;
extern __IO RS485_COM_CTRL_PARA_T rs485_com_ctrl_pata_g;
void RS485_read_data_GPIO_Init(void);
void rs485ReadDataPro(FUN_START_CTRL_PARA_T * sys_fun_run_ctrl_p);
#endif