forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-04-18 de0f427ee76ab84d3afb22c92a2b065b1ce06d3e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#ifndef _POWER_MANAGE_H_
#define _POWER_MANAGE_H_
 
#include "define_all.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 ALKALI_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                                  4
#define    AD_LITH_BAT_CNT                                  8
#define    LITH_VOL_COE                                           2.01f
 
#define    AD_ALKA_BAT_REF_VOL                              5.0f
#define    AD_ALKA_BAT_CH                                  8
#define    AD_ALKA_BAT_CNT                                  8
#define    ALKA_VOL_COE                                        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{
    uint8_t                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);
 
 
#endif