#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 LITH_PWR_LOSE_PORT GPIOF #define LITH_PWR_LOSE_PIN GPIO_Pin_11 // ﮵ç¼ì²â¿ª¹Ø #define LITHIUM_DETECTION_PORT GPIOF #define LITHIUM_DETECTION_PIN GPIO_Pin_3 #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_LOSE_PORT GPIOH #define ALKALI_PWR_LOSE_PIN GPIO_Pin_0 // ¼îµç¼ì²â¿ª¹Ø #define ALKALI_DETECTION_PORT GPIOF #define ALKALI_DETECTION_PIN GPIO_Pin_4 #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 BORROW_PWR_PORT GPIOG #define BORROW_PWR_PIN GPIO_Pin_2 #define BORROW_PWR_ON GPIO_ResetBits(BORROW_PWR_PORT,BORROW_PWR_PIN) #define BORROW_PWR_OFF GPIO_SetBits(BORROW_PWR_PORT,BORROW_PWR_PIN) //Íâµç¼ì²â¶Ë¿Ú #define HWIDO_EX_PWR_PORT GPIOF #define HWIDO_EX_PWR_PIN GPIO_Pin_5 #define HWIDO_EX_PWR_IO_READ GPIO_ReadInputDataBit(HWIDO_EX_PWR_PORT, HWIDO_EX_PWR_PIN) //Íâµç¿ØÖÆ¶Ë¿Ú #define EX_PWR_EN_PORT GPIOG #define EX_PWR_EN_PIN GPIO_Pin_3 #define EX_PWR_ON GPIO_SetBits(EX_PWR_EN_PORT,EX_PWR_EN_PIN) #define EX_PWR_OFF GPIO_ResetBits(EX_PWR_EN_PORT,EX_PWR_EN_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 //Ê£ÓàµçÁ¿°Ù·Ö±È¼¶Êý #define BAT_PERSENT_LEVEL_3 70 #define BAT_PERSENT_LEVEL_2 40 #define BAT_PERSENT_LEVEL_1 20 #define BAT_PERSENT_LEVEL_0 0 typedef enum { LMS_NONE, LMS_PERIOD, LMS_KEY, LMS_OPEN_VALVE_BEFORE, }LITH_MEASURE_STATUS; typedef enum { AMS_NONE, AMS_PERIOD, AMS_KEY, AMS_WRC_BEFORE, }ALKA_MEASURE_STATUS; typedef enum { BAT_V_NONE, //ÎÞ״̬ BAT_V_LOSE, //¶ªÊ§£¬¼´¼ì²âµçѹ¼«µÍ£¬ÈÏΪµç³Ø¶ªÊ§ BAT_V_DOWN, //Ƿѹ BAT_V_LOW, //µÍµç }BAT_V_STATUS; #pragma pack(1) //ÈáÐÔÊý×é //Óŵ㣺ʹÓöѿռ䣬µØÖ·Á¬Ðø¼õÉÙË鯬Äڴ棨Ïà¶ÔÖ¸ÕëÊý¾Ý£© //ȱµã£ºÃ¿´ÎʹÓÃÍêÐèÒªÊÖ¶¯ÊÍ·Å typedef struct ad_data_get{ u8 ad_ch; u16 ad_buffer_cnt; uint32_t ad_get_buffer[]; }ad_data_s; #pragma pack() typedef struct pwr_vol{ LITH_MEASURE_STATUS lith_flag; //µçÁ¿²âÁ¿±ê־λ ALKA_MEASURE_STATUS alka_flag; FlagStatus mcu_temp_flag; //mcuζȱê־λ float lith_vcc; BAT_V_STATUS lith_vcc_status; float alka_vcc; BAT_V_STATUS alka_vcc_status; float mcu_temperature; int8_t lith_vcc_per; //¸ù¾Ýµçѹ¼ÆËãµÄ°Ù·Ö±È int8_t lith_remain_use_time_per; //¸ù¾ÝʹÓÃʱ¼ä¼ÆËãµÄÊ£Óà°Ù·Ö±È }PWR_VOL_T; 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 GetPwrStatusPro(PWR_VOL_T * pwr_vol_p); void PowerManagrInit(void); #endif