forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

wujiazhi
2024-06-13 72def895431ad7a08e635b11f3da738e2b2c4618
Function/POWER_MANAGE/power_manage.h
New file
@@ -0,0 +1,108 @@
#ifndef _POWER_MANAGE_H_
#define _POWER_MANAGE_H_
#include "define_all.h"
#include "administrator.h"
// µçÁ¿²ÎÊý±ê־λÉèÖÃ
#define __VCC_PARA_FLAG_SET_(__HANDLE__) ((&pwr_vol_g)->__HANDLE__ = SET)
// µçÁ¿²ÎÊý±ê־λÇå³ý
#define __VCC_PARA_FLAG_CLEAR_(__HANDLE__) ((&pwr_vol_g)->__HANDLE__ = RESET)
// ï®µçµôµç
#define LITHIUM_PWR_DOWN_PORT GPIOF
#define LITHIUM_PWR_DOWN_PIN GPIO_Pin_11
// ï®µçǷѹ
#define LIT_PWR_UNDER_PORT GPIOF
#define LIT_PWR_UNDER_PIN GPIO_Pin_6
// ï®µç¼ì²â¿ª¹Ø
#define LITHIUM_DETECTION_PORT GPIOD
#define LITHIUM_DETECTION_PIN GPIO_Pin_2
#define LIT_DEC_ON GPIO_SetBits(LITHIUM_DETECTION_PORT, LITHIUM_DETECTION_PIN)
#define LIT_DEC_OFF GPIO_ResetBits(LITHIUM_DETECTION_PORT, LITHIUM_DETECTION_PIN)
// ¼îµçµôµç
#define ALKALI_PWR_DOWN_PORT GPIOA
#define ALKALI_PWR_DOWN_PIN GPIO_Pin_4
// ¼îµç¼ì²â¿ª¹Ø
#define ALKALI_DETECTION_PORT GPIOB
#define LITH_TEST_ENALKALI_DETECTION_PIN GPIO_Pin_2
#define ALK_DEC_ON GPIO_SetBits(ALKALI_DETECTION_PORT, ALKALI_DETECTION_PIN)
#define ALK_DEC_OFF GPIO_ResetBits(ALKALI_DETECTION_PORT, ALKALI_DETECTION_PIN)
#define Ad_LITH_PF6_BAT_CH 5
#define Ad_LITH_PF6_BAT_CNT 8
#define LITH_PF6_VOL_COE 1.206f
#define Ad_LITH_BAT_REF_VOL 5.0f
#define Ad_LITH_BAT_CH 5
#define Ad_LITH_BAT_CNT 8
#define LITH_VOL_COE 3.20 // 2.01f
#define Ad_ALKA_BAT_REF_VOL 5.0f
#define Ad_ALKA_BAT_CH 10
#define Ad_ALKA_BAT_CNT 8
#define ALKA_VOL_COE 2.70 //   3.14f
#define AD_VTEM_CH ADC_CFGR_BUFSEL_TS
#define AD_VTEM_CNT 8
typedef enum
{
  LMS_NONE,
  LMS_PERIOD,
  LMS_KEY,
  LMS_OPEN_VALVE_BEFORE,
} LITH_MEASURE_STATUS;
typedef enum
{
  AMS_NONE,
  AMS_PERIOD,
  AMS_KEY,
  AMS_GPRS_BEFORE,
} ALKA_MEASURE_STATUS;
#pragma pack(1)
// ÈáÐÔÊý×é
// Óŵ㣺ʹÓöѿռ䣬µØÖ·Á¬Ðø¼õÉÙË鯬Äڴ棨Ïà¶ÔÖ¸ÕëÊý¾Ý£©
// È±µã£ºÃ¿´ÎʹÓÃÍêÐèÒªÊÖ¶¯ÊÍ·Å
typedef struct ad_data_get
{
  u8 ad_ch;
  u16 ad_buffer_cnt;
  uint32_t ad_get_buffer[];
} ad_data_s;
typedef struct pwr_vol
{
  LITH_MEASURE_STATUS lith_flag; // µçÁ¿²âÁ¿±ê־λ
  ALKA_MEASURE_STATUS alka_flag;
  FlagStatus mcu_temp_flag; // mcuζȱê־λ
  float lith_vcc;
  float alka_vcc;
  float mcu_temperature;
  int8_t lith_vcc_per;
} PWR_VOL_T;
#pragma pack()
extern uint8_t sys_bst_flag;
extern uint8_t first_power_get_cnt_g;
extern PWR_VOL_T pwr_vol_g;
void Power_IO_Init(void);
float Get_Alka_Bat_Voltage(void);
float Get_Lith_Bat_Voltage(void);
void Get_Double_Bat_Voltage(PWR_VOL_T *pwr_vol_p);
uint32_t Get_vol_average(ad_data_s *data_p);
float Get_Mcu_Temp(void);
#endif