From 6e3f1f560d618b37ee1a47fa2b0f682b70c3ef1c Mon Sep 17 00:00:00 2001
From: jinlicong <493886250@qq.com>
Date: Wed, 19 Jun 2024 17:25:45 +0800
Subject: [PATCH] 增加OTA协议
---
Function/POWER_MANAGE/power_manage.c | 140 +++++++++++++++++++++++++++++++++++-----------
1 files changed, 105 insertions(+), 35 deletions(-)
diff --git a/Function/POWER_MANAGE/power_manage.c b/Function/POWER_MANAGE/power_manage.c
index 683d3a4..8ef2462 100644
--- a/Function/POWER_MANAGE/power_manage.c
+++ b/Function/POWER_MANAGE/power_manage.c
@@ -12,12 +12,13 @@
#include "system_mem_para.h"
#include "sizhu_ctrl_word.h"
#include "linked_list.h"
+#include "upper_com.h"
PWR_VOL_T pwr_vol_g = {.lith_flag = LMS_PERIOD, .alka_flag = AMS_PERIOD, .mcu_temp_flag = SET,.lith_vcc_per = 100}; // Ĭ���ϵ�ɼ�һ�ε�����MCU�¶�
uint8_t first_power_get_cnt_g = 0;
-
+LIMIT_TRIGGER_RECORD_PARA_T limit_trigger_record_para_g;
void Power_IO_Init(void)
{
@@ -36,14 +37,17 @@
OutputIO(EX_PWR_EN_PORT,EX_PWR_EN_PIN,OUT_PUSHPULL);
BORROW_PWR_OFF;
EX_PWR_OFF;
+
+ InputtIO( LIMIT_TRIGGER_PORT, LIMIT_TRIGGER_PIN, IN_NORMAL);
}
void Lith_Battery_GPIO_Clk_Init(void)
{
CMU_PERCLK_SetableEx(PADCLK, ENABLE); //PADʱ�ӣ�GPIO��ʹ�ܺ���
- AnalogIO(LIT_ADC_PORT,LIT_ADC_PIN);//ADC_IN4
+ AnalogIO(LIT_ADC_PORT,LIT_ADC_PIN);//
+ GPIOx_ANEN_Setable(LIT_ADC_PORT,LIT_ADC_PIN,ENABLE);
OutputIO(LITH_DETECTION_PORT,LITH_DETECTION_PIN,OUT_PUSHPULL);
-// AnalogIO(LIT_PWR_UNDER_PORT,LIT_PWR_UNDER_PIN);//ADC_5
+// AnalogIO(LIT_PWR_UNDER_PORT,LIT_PWR_UNDER_PIN);
}
@@ -51,6 +55,7 @@
{
CMU_PERCLK_SetableEx(PADCLK, ENABLE); //PADʱ�ӣ�GPIO��ʹ�ܺ���
AnalogIO_H(ALK_ADC_PIN);
+// GPIOx_ANEN_Setable(ALK_ADC_PORT,ALK_ADC_PIN,ENABLE);
OutputIO(ALKA_DETECTION_PORT,ALKA_DETECTION_PIN,OUT_PUSHPULL);
}
@@ -58,7 +63,15 @@
{
CMU_PERCLK_SetableEx(PADCLK, ENABLE); //PADʱ�ӣ�GPIO��ʹ�ܺ���
InputtIO( HWIDO_EX_PWR_PORT, HWIDO_EX_PWR_PIN, IN_NORMAL);
+ OutputIO(EX_PWR_EN_PORT,EX_PWR_EN_PIN,OUT_PUSHPULL);
}
+
+void borrow_Pwr_GPIO_Clk_Init(void)
+{
+ CMU_PERCLK_SetableEx(PADCLK, ENABLE); //PADʱ�ӣ�GPIO��ʹ�ܺ���
+ OutputIO( BORROW_PWR_PORT, BORROW_PWR_PIN, OUT_PUSHPULL);
+}
+
/******************************************
* func: Get_vol_Average
@@ -115,7 +128,7 @@
float battery_vol = 0;
ad_data_s *data_ins;
Alka_Battery_GPIO_Clk_Init();
- ADC_IN8_Init();
+ ADC_IN10_Init();
ALK_DEC_ON;
delay_ms(5);
// �������������ڴ�ռ�
@@ -149,7 +162,7 @@
float battery_vol = 0;
ad_data_s *data_ins;
Lith_Battery_GPIO_Clk_Init();
- ADC_IN4_Init();
+ ADC_IN5_Init();
LIT_DEC_ON;
delay_ms(5);
if ((data_ins = (ad_data_s *)malloc(sizeof(data_ins) + sizeof(uint16_t) * AD_LITH_BAT_CNT)) != NULL)
@@ -378,18 +391,23 @@
pwr_vol_p->lith_lose_check_flag = RESET;
if(LITH_PWR_LOSE_IO_READ == Bit_RESET){
//ȷ��﮵����
- __SYS_STATUS_ALARM_BYTES_SET(lith_remove); //?﮵����֮����ҪһЩ������������ʵʱ��������洢һ��
+ __SYS_STATUS_ALARM_BYTES_SET(lith_remove,ALARM_ID_LITH_BAT_REMOVAL); //?﮵����֮����ҪһЩ������������ʵʱ��������洢һ��
}
}
//������ȷ��
- if(pwr_vol_p->alka_lose_check_flag == SET){
- pwr_vol_p->alka_lose_check_flag = RESET;
+// if(pwr_vol_p->alka_lose_check_flag == SET){ //��ʱû���жϴ�����ע�͵�
+// pwr_vol_p->alka_lose_check_flag = RESET;
if(ALKA_PWR_LOSE_IO_READ == Bit_RESET){
- //ȷ��﮵����
- __SYS_STATUS_ALARM_BYTES_SET(alka_remove);
+ delay_ms(10);
+ if(ALKA_PWR_LOSE_IO_READ == Bit_RESET){
+ //ȷ��﮵����
+ __SYS_STATUS_ALARM_BYTES_SET(alka_remove,ALARM_ID_ALKA_BAT_REMOVAL);
+ }
+ }else{
+ __SYS_STATUS_BYTES_STATUS(alka_remove, RESET, ALARM_ID_ALKA_BAT_REMOVAL);
}
- }
+// }
@@ -400,7 +418,7 @@
}
if((pwr_vol_p->alka_flag != AMS_NONE)&&(delay_time_cnt >= DELAY_TIME) ){
- pwr_vol_p->alka_flag = AMS_PERIOD;
+ pwr_vol_p->alka_flag = AMS_NONE;
pwr_vol_p->alka_vcc = Get_Alka_Bat_Voltage();//�����
Alka_Bat_Voltage_Status(pwr_vol_p->alka_vcc,pwr_vol_p);
}
@@ -425,33 +443,43 @@
}
if(pwr_vol_p->lith_vcc_status == BAT_V_DOWN){
- __SYS_STATUS_BYTES_STATUS(lith_down, SET, ALARM_ID_LITH_BAT_DOWN);
- __SYS_STATUS_BYTES_STATUS(lith_low, SET, ALARM_ID_LITH_BAT_LOW);
+ __SYS_STATUS_ALARM_BYTES_SET(lith_down, ALARM_ID_LITH_BAT_DOWN);
+ __SYS_STATUS_ALARM_BYTES_SET(lith_low, ALARM_ID_LITH_BAT_LOW);
pwr_vol_p->lith_synthesize_per = 0;
}else if(pwr_vol_p->lith_vcc_status == BAT_V_LOW){
__SYS_STATUS_BYTES_STATUS(lith_down, RESET, ALARM_ID_LITH_BAT_DOWN);
- __SYS_STATUS_BYTES_STATUS(lith_low, SET, ALARM_ID_LITH_BAT_LOW);
+ __SYS_STATUS_ALARM_BYTES_SET(lith_low, ALARM_ID_LITH_BAT_LOW);
pwr_vol_p->lith_synthesize_per = pwr_vol_p->alka_vcc_per;
}else{
pwr_vol_p->lith_synthesize_per = (pwr_vol_p->lith_remain_use_time_per ==100)? 100:pwr_vol_p->lith_remain_use_time_per + 1; //Ϊ��100%�ܹ�ά��һ��ʱ�䣬��ѹ����״̬ʱ�ٷֱȲ���Ϊ0��Ϊ0��Ҫ��ʾ���ˣ�����1������ѹ״̬��ΪǷѹ
if(pwr_vol_p->lith_synthesize_per < 20){
__SYS_STATUS_BYTES_STATUS(lith_down, RESET, ALARM_ID_LITH_BAT_DOWN);
- __SYS_STATUS_BYTES_STATUS(lith_low, SET, ALARM_ID_LITH_BAT_LOW);
+ __SYS_STATUS_ALARM_BYTES_SET(lith_low, ALARM_ID_LITH_BAT_LOW);
}else{
__SYS_STATUS_BYTES_STATUS(lith_down, RESET, ALARM_ID_LITH_BAT_DOWN);
__SYS_STATUS_BYTES_STATUS(lith_low, RESET, ALARM_ID_LITH_BAT_LOW);
}
}
- /*���ؿ��ܸ���ʹ�ô�����������ʱ�䣬����״̬�жϷ�ʽ������*/
+ /*���ؿ��ܸ���ʹ�ô�����������ʱ�䣬����״̬�жϷ�ʽ��������ʱ��ֻ�Ǹ��ݵ�ѹֵ*/
+ if(pwr_vol_p->alka_vcc_status == BAT_V_DOWN){
+ __SYS_STATUS_ALARM_BYTES_SET(alka_down, ALARM_ID_ALKA_BAT_DOWN);
+ __SYS_STATUS_ALARM_BYTES_SET(alka_low, ALARM_ID_ALKA_BAT_LOW);
+ }else if(pwr_vol_p->alka_vcc_status == BAT_V_LOW){
+ __SYS_STATUS_BYTES_STATUS(alka_down, RESET, ALARM_ID_ALKA_BAT_DOWN);
+ __SYS_STATUS_ALARM_BYTES_SET(alka_low, ALARM_ID_ALKA_BAT_LOW);
+ }else{
+ __SYS_STATUS_BYTES_STATUS(alka_down, RESET, ALARM_ID_ALKA_BAT_DOWN);
+ __SYS_STATUS_BYTES_STATUS(alka_low, RESET, ALARM_ID_ALKA_BAT_LOW);
+ }
+
-
- /****���ʵʱ���******/
+ /****���ʵʱ���,�������ӳ٣�����Ƴ�Ҫ˲���л��ص�ع���******/
EX_Pwr_GPIO_Clk_Init();
if(HWIDO_EX_PWR_IO_READ == Bit_RESET){
if((pwr_vol_p->ex_pwr_out_cnt!=0)&&(pwr_vol_p->ex_pwr_out_cnt!=EX_PWR_CONTINUE_TIME)){
- //������;״̬�ı䣬���ܴ�����粻�ȶ���Ƶ��������
+ //������;״̬�ı䣬���ܴ�����粻�ȶ���Ƶ��������
}
pwr_vol_p->ex_pwr_out_cnt = 0;
if(pwr_vol_p->ex_pwr_in_cnt < EX_PWR_CONTINUE_TIME )
@@ -460,26 +488,64 @@
if(pwr_vol_p->ex_pwr_in_cnt >=EX_PWR_CONTINUE_TIME){
if(__SYS_STATUS_BYTES_GET(power_state) != SET){
EX_PWR_ON;
- __SYS_STATUS_BYTES_STATUS(power_state, SET, ALARM_ID_NORMAL);
- //?������仯����
+ __SYS_STATUS_BYTES_STATUS(power_state, SET, ALARM_ID_NORMAL); //��״̬�����뱨����ʾ
+ //������֮�������Ƴ��жϣ�����Ƴ�Ҫ�����л���ع���
+ GPIO_EXTI_Init( HWIDO_EX_PWR_PORT, HWIDO_EX_PWR_PIN, EXTI_RISING, ENABLE);
+
+ up_comm_uart_enable();//���ʱʹ����λ������
+ uart_ctrl_para_g.UP_COMM_rxto_flag = RESET;
+ lcd_first_wake_up_flag_g = SET; //�����������Ļ�����ֳ���
+
+ //���ر�
+ borrow_Pwr_GPIO_Clk_Init();
+ BORROW_PWR_OFF;
+
+ //������仯��������籨�����������ֻ�����������أ�����ʾ������
+ if(__SYS_ALARM_CTL_BYTES_GET(power_state)){
+ if(__SYS_ALARM_REPORT_CTL_BYTES_GET(power_state) ==SET){
+ if(AlarmCntIncrease(ALARM_ID_EX_POWER_STATUS_CHANGE) ==SET){
+ system_alarm_word_g.alarm_word.power_state = SET;
+ AlarmTriggerWrcFlag = SET;
+ }
+ }
+ }
+
}
}
}else
{
- if((pwr_vol_p->ex_pwr_in_cnt!=0)&&(pwr_vol_p->ex_pwr_in_cnt!=EX_PWR_CONTINUE_TIME)){
- //������;״̬�ı䣬���ܴ�����粻�ȶ���Ƶ��������
- }
+ GPIO_EXTI_Init( HWIDO_EX_PWR_PORT, HWIDO_EX_PWR_PIN, EXTI_RISING, DISABLE);
+ EX_PWR_OFF;
pwr_vol_p->ex_pwr_in_cnt = 0;
- if(pwr_vol_p->ex_pwr_out_cnt < EX_PWR_CONTINUE_TIME )
- pwr_vol_p->ex_pwr_out_cnt++;
-
- if(pwr_vol_p->ex_pwr_out_cnt >=EX_PWR_CONTINUE_TIME){
- if(__SYS_STATUS_BYTES_GET(power_state) != RESET){
- EX_PWR_OFF;
- __SYS_STATUS_BYTES_STATUS(power_state, RESET, ALARM_ID_NORMAL);
- //?������仯����
- }
+ //������仯��������籨��������Ƴ����������뷧�أ�����ʾ������
+ if(__SYS_STATUS_BYTES_GET(power_state) ==SET){
+ __SYS_STATUS_BYTES_STATUS(power_state, RESET, ALARM_ID_NORMAL);//��״̬�����뱨����ʾ
+ if(__SYS_ALARM_CTL_BYTES_GET(power_state)){
+ system_alarm_word_for_valve_g.alarm_word.power_state = SET; //����Ƴ�����Ҫ��������
+ if(__SYS_ALARM_REPORT_CTL_BYTES_GET(power_state) ==SET){
+ if(AlarmCntIncrease(ALARM_ID_EX_POWER_STATUS_CHANGE) ==SET){
+ system_alarm_word_g.alarm_word.power_state = SET;
+ AlarmTriggerWrcFlag = SET;
+ }
+ }
+ }
}
+ //����Ƴ��ڽ�ֹ��Ҳ����������ǰ��ֹ
+
+
+// if((pwr_vol_p->ex_pwr_in_cnt!=0)&&(pwr_vol_p->ex_pwr_in_cnt!=EX_PWR_CONTINUE_TIME)){
+// //������;״̬�ı䣬���ܴ�����粻�ȶ���Ƶ��������
+// }
+// pwr_vol_p->ex_pwr_in_cnt = 0;
+// if(pwr_vol_p->ex_pwr_out_cnt < EX_PWR_CONTINUE_TIME )
+// pwr_vol_p->ex_pwr_out_cnt++;
+//
+// if(pwr_vol_p->ex_pwr_out_cnt >=EX_PWR_CONTINUE_TIME){
+// if(__SYS_STATUS_BYTES_GET(power_state) != RESET){
+// EX_PWR_OFF;
+// __SYS_STATUS_BYTES_STATUS(power_state, RESET, ALARM_ID_NORMAL);
+// }
+// }
}
@@ -520,6 +586,10 @@
if(HWIDO_EX_PWR_IO_READ == Bit_RESET){
EX_PWR_ON;
__SYS_STATUS_BYTES_STATUS(power_state, SET, ALARM_ID_NORMAL);
+ //������֮�������Ƴ��жϣ�����Ƴ�Ҫ�����л���ع���
+ GPIO_EXTI_Init( HWIDO_EX_PWR_PORT, HWIDO_EX_PWR_PIN, EXTI_RISING, ENABLE);
+
+ up_comm_uart_enable();//���ʱʹ����λ������
}else{
EX_PWR_OFF;
__SYS_STATUS_BYTES_STATUS(power_state, RESET, ALARM_ID_NORMAL);
@@ -530,4 +600,4 @@
}
-}
\ No newline at end of file
+}
--
Gitblit v1.9.3