From 4a3e00f133f323eba0ca7961a003cf9f1ebbd606 Mon Sep 17 00:00:00 2001 From: czq <860517298@qq.com> Date: Wed, 21 May 2025 13:19:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=9A=82=E5=AD=98=20?= =?UTF-8?q?=E6=8C=89=E9=94=AE=E7=AC=AC=E4=B8=80=E6=AC=A1=E6=8C=89=E4=B8=8B?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E5=BD=93=E5=89=8D=E7=8A=B6=E6=80=81=EF=BC=8C?= =?UTF-8?q?=E7=AC=AC=E4=BA=8C=E6=AC=A1=E5=86=8D=E6=94=B9=E5=8F=98=E7=94=B5?= =?UTF-8?q?=E6=9C=BA=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- APP/peripheral.c | 2 -- APP/peripheral_main.c | 5 ++-- README.md | 12 ++++++-- bsp/inc/bsp_key.h | 3 +- bsp/src/bsp_bmp390.c | 25 +++++++++++----- bsp/src/bsp_key.c | 67 +++++++++++++++++++++++++------------------ bsp/src/bsp_ml307r.c | 4 ++- bsp/src/bsp_motor.c | 13 +++++---- bsp/src/bsp_valve.c | 8 ------ 9 files changed, 81 insertions(+), 58 deletions(-) diff --git a/APP/peripheral.c b/APP/peripheral.c index 096f94b..636b478 100644 --- a/APP/peripheral.c +++ b/APP/peripheral.c @@ -715,11 +715,9 @@ static void peripheralStateNotificationCB(gapRole_States_t newState, gapRoleEven */ static void performPeriodicTask(void) { - // ?????? gValveData.bat = BSP_ReadVbat(); if (gValveData.bat <= LOW_VABAT_CLOSE_VALUE) { - gValveData.switch_status = kClosed; tmos_set_event(vavle_task_id, VAVLE_CLOSE_START_EVT); } else if (gValveData.bat <= LOW_VABAT_ALARM_VALUE) diff --git a/APP/peripheral_main.c b/APP/peripheral_main.c index 760bcc6..177cc55 100644 --- a/APP/peripheral_main.c +++ b/APP/peripheral_main.c @@ -103,7 +103,6 @@ int main(void) MultiTimerInstall((PlatformTicksFunction_t)BSP_Get_Tick); BSP_KEY_Init(app_task_handler); - // BSP_MOTOR_Init(); BSP_VAVLE_Init(); BSP_LED_Init(); @@ -111,8 +110,8 @@ int main(void) BSP_VBAT_Init(); logDebug("VBAT init ok\n"); - BSP_Ml307r_Init(); - logDebug("BSP_M1307r ok\n"); + // BSP_Ml307r_Init(); + // logDebug("BSP_M1307r ok\n"); ShowRestartReason(); IWDG_Init(5000); diff --git a/README.md b/README.md index 926388b..ecf08d5 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,9 @@ -1.电机停止需判断COIL_ADC优化 -2.低电压判断及后续处理 -3.暂时屏蔽4G \ No newline at end of file +1.按键第一次按下显示当前状态,第二次再改变电机状态 +2.蓝牙连接成功及断开显示 +3.json格式优化 +4.服务器对接测试 + +5.气压传感器数值测试 +6.低功耗优化 +7.电机停止需判断COIL_ADC优化 +8.低电压判断及后续处理 diff --git a/bsp/inc/bsp_key.h b/bsp/inc/bsp_key.h index a5aa2cf..3c518d7 100644 --- a/bsp/inc/bsp_key.h +++ b/bsp/inc/bsp_key.h @@ -9,11 +9,12 @@ #define KEY_TIMOUT_MS 1000 #define KEY_LONG_PRESS_MS 5000 #define KEY_SACN_MS 40 +#define KEY_IDLE_TIMEOUT_MS 10000 #define KEY_SCAN_EVT (0x0001 << 0) #define KEY_WAKEUP_EVT (0x0001 << 1) #define KEY_RELEASE_EVT (0x0001 << 2) -#define KEY_IDLE_TIMEOUT_EVT (0x0001 << 2) +#define KEY_IDLE_TIMEOUT_EVT (0x0001 << 3) // KEY_B_PIN at PB7,low->active #define KEY_A_PIN GPIO_Pin_7 diff --git a/bsp/src/bsp_bmp390.c b/bsp/src/bsp_bmp390.c index 867a1f8..a7383b2 100644 --- a/bsp/src/bsp_bmp390.c +++ b/bsp/src/bsp_bmp390.c @@ -765,7 +765,6 @@ uint16_t Check_ProcessEvent(uint8_t task_id, uint16_t events) if(motor_flag == 1) { motor_flag = 0; - gValveData.switch_status = kOpened; LED_VALVE_OPEN; VALVE_OPEN(); // DelayMs(1000); @@ -784,6 +783,18 @@ uint16_t Check_ProcessEvent(uint8_t task_id, uint16_t events) logDebug("motor/LED close!!!"); tmos_start_task(check_task_id, MOTOR_STOP_EVT, MS1_TO_SYSTEM_TIME(CHARGE_TIME_MS)); } + else if(motor_flag == 3) + { + motor_flag = 0; + if(gValveData.switch_status == kOpened) + { + LED_VALVE_OPEN; + }else + { + LED_VALVE_CLOSE; + } + // DelayMs(500); + } tmos_start_task(check_task_id, CHECK_EVT_START, MS1_TO_SYSTEM_TIME(200)); //100 return (events ^ CHECK_EVT_START); } @@ -791,12 +802,12 @@ uint16_t Check_ProcessEvent(uint8_t task_id, uint16_t events) { VALVE_STOP(); logDebug("motor STOP"); - DelayMs(1500); - if(fault_state == 4) - { - IotFlag_t.Valve_Close_flag = 1; - Iot_Send_Data(); - } + // DelayMs(1500); + // if(fault_state == 4) + // { + // IotFlag_t.Valve_Close_flag = 1; + // Iot_Send_Data(); + // } return (events ^ MOTOR_STOP_EVT); } return 0; diff --git a/bsp/src/bsp_key.c b/bsp/src/bsp_key.c index 3c41c0c..69a87b3 100644 --- a/bsp/src/bsp_key.c +++ b/bsp/src/bsp_key.c @@ -5,6 +5,7 @@ #include "bsp_ml307r.h" #include "log.h" #include "SLEEP.h" +#include "bsp_valve.h" // https://www.cnblogs.com/iot-fan/p/14304943.html @@ -19,6 +20,7 @@ tmosTaskID key_task_id = INVALID_TASK_ID; volatile uint8_t key_wakeup_flag = 0; volatile uint8_t key_timeout_flag = 0; +volatile uint8_t press_count = 0; static app_task_evt_handler_t p_handler = NULL; @@ -142,7 +144,11 @@ static uint16_t KEY_Task_ProcessEvent(uint8_t task_id, uint16_t events) } return (events ^ KEY_SCAN_EVT); } - + if (events & KEY_IDLE_TIMEOUT_EVT) + { + press_count = 0; + return (events ^ KEY_IDLE_TIMEOUT_EVT); + } // Discard unknown events return 0; } @@ -319,42 +325,47 @@ __HIGH_CODE __attribute__((noinline)) void KEY_ProcessLoop(void) { - static uint8_t key_flag = 0; - // { - // if (R16_PB_INT_IF & KEY_B_PIN) - // { - // R16_PB_INT_IF = KEY_B_PIN; - // tmos_set_event(key_task_id, KEY_SCAN_EVT); - // logDebug("KEY_ProcessLoop"); - // } - // } - + // static uint8_t key_flag = 0; + if (key_wakeup_flag) { key_wakeup_flag = 0; - key_flag = !key_flag; - if(key_flag) + press_count++; + + if (press_count == 1) { - motor_flag = 1; - logDebug("motor open"); - } - else { - motor_flag = 2; - logDebug("motor close"); + motor_flag = 3; logDebug("motor_flag_start = %d",motor_flag); + tmos_start_task(key_task_id, KEY_IDLE_TIMEOUT_EVT, MS1_TO_SYSTEM_TIME(KEY_IDLE_TIMEOUT_MS)); } + else if (press_count >= 2) + { + tmos_start_task(key_task_id, KEY_IDLE_TIMEOUT_EVT, MS1_TO_SYSTEM_TIME(KEY_IDLE_TIMEOUT_MS)); + if(gValveData.switch_status == kClosed) + { + motor_flag = 1; + logDebug("motor open"); + }else + { + motor_flag = 2; + logDebug("motor close"); + } + // key_flag = !key_flag; + // if(key_flag) + // { + // motor_flag = 1; + // logDebug("motor open"); + // } + // else { + // motor_flag = 2; + // logDebug("motor close"); + // } + // press_count = 0; + } + tmos_set_event(key_task_id, KEY_SCAN_EVT); logDebug("KEY_ProcessLoop"); } - - // if (key_wakeup_flag) - // { - // key_wakeup_flag = 0; - // tmos_set_event(key_task_id, KEY_SCAN_EVT); - // // tmos_start_task(key_task_id, KEY_SCAN_EVT, MS1_TO_SYSTEM_TIME(20)); - // // tmos_start_task(key_task_id, KEY_IDLE_TIMEOUT_EVT, MS1_TO_SYSTEM_TIME(1000 * 10)); - // logDebug("key_wakeup_flag"); - // } } diff --git a/bsp/src/bsp_ml307r.c b/bsp/src/bsp_ml307r.c index bd5104c..413e6f7 100644 --- a/bsp/src/bsp_ml307r.c +++ b/bsp/src/bsp_ml307r.c @@ -153,10 +153,12 @@ void StopTask_CallBack(MultiTimer* timer, void* userData) { IotFlag_t.PowerOn_error_flag = 0; tmos_stop_task(ml307_task_id, ML307_PERIODIC_EVT); + PFIC_DisableIRQ(UART1_IRQn); BSP_RequestSleep(); }else{ // BSP_Ml307_Power_Off(); //ػ tmos_stop_task(ml307_task_id, ML307_PERIODIC_EVT); + PFIC_DisableIRQ(UART1_IRQn); BSP_RequestSleep(); } IotFlag_t.Date_Sending_flag = 0; @@ -519,7 +521,7 @@ static int BSP_Module_Connect_CtWing_Handle(at_env_t *e) { case 0: logDebug("create device...\r\n"); - e->println(e, "AT+MIPOPEN=0,\"TCP\",\"112.125.89.8\",45663,,1"); // 8.135.10.183,32994 + e->println(e, "AT+MIPOPEN=0,\"TCP\",\"112.125.89.8\",42286,,1"); // 8.135.10.183,32994 e->reset_timer(e); e->state++; break; diff --git a/bsp/src/bsp_motor.c b/bsp/src/bsp_motor.c index 05605d9..22af3fe 100644 --- a/bsp/src/bsp_motor.c +++ b/bsp/src/bsp_motor.c @@ -5,13 +5,14 @@ * Author: 123 */ #include "bsp_motor.h" +#include "bsp_valve.h" //uint8_t motor_state = 0; valve_state valve_status = {0}; void BSP_MOTOR_Init(void) { - GPIOA_ResetBits(COIL_ADC); - GPIOA_ModeCfg(COIL_ADC, GPIO_ModeOut_PP_5mA); + // GPIOA_ResetBits(COIL_ADC); + // GPIOA_ModeCfg(COIL_ADC, GPIO_ModeOut_PP_5mA); GPIOB_ResetBits(COIL_A); GPIOB_ModeCfg(COIL_A, GPIO_ModeOut_PP_5mA); @@ -23,25 +24,27 @@ void BSP_MOTOR_Init(void) } void VALVE_OPEN(void) { - GPIOA_SetBits(COIL_ADC); + // GPIOA_SetBits(COIL_ADC); //IN1 + ; IN2 - GPIOB_SetBits(COIL_A); GPIOB_ResetBits(COIL_B); valve_status.motor_state = 1; + gValveData.switch_status = kOpened; } void VALVE_CLOSE(void) { - GPIOA_SetBits(COIL_ADC); + // GPIOA_SetBits(COIL_ADC); //IN1 - ; IN2 + GPIOB_ResetBits(COIL_A); GPIOB_SetBits(COIL_B); valve_status.motor_state = 0; + gValveData.switch_status = kClosed; } void VALVE_STOP(void) { - GPIOA_ResetBits(COIL_ADC); + // GPIOA_ResetBits(COIL_ADC); //IN1 + ; IN2 + GPIOB_SetBits(COIL_A); GPIOB_SetBits(COIL_B); diff --git a/bsp/src/bsp_valve.c b/bsp/src/bsp_valve.c index 20a0f66..c371de6 100644 --- a/bsp/src/bsp_valve.c +++ b/bsp/src/bsp_valve.c @@ -282,11 +282,8 @@ static uint16_t VAVLE_Task_ProcessEvent(uint8_t task_id, uint16_t events) // 阀 if (events & VAVLE_CLOSE_END_EVT) // 阀门关闭结束事件 { VALVE_STOP(); - LED_ALL_CLOSE; - gValveData.switch_status = kClosed; - tmos_memset(&RelyData, 0, sizeof(RelyData)); BSP_VALVE_Generate_ValveResponse(&RelyData, kCmdCloseVavle, 1); @@ -331,11 +328,8 @@ static uint16_t VAVLE_Task_ProcessEvent(uint8_t task_id, uint16_t events) // 阀 if (events & VAVLE_OPEN_END_EVT) // 阀门打开结束事件 { VALVE_STOP(); - LED_ALL_CLOSE; - gValveData.switch_status = kOpened; - tmos_memset(&RelyData, 0, sizeof(RelyData)); BSP_VALVE_Generate_ValveResponse(&RelyData, kCmdOpenVavle, 1); @@ -415,10 +409,8 @@ static uint16_t VAVLE_Task_ProcessEvent(uint8_t task_id, uint16_t events) // 阀 void BSP_VAVLE_Init(void) // 阀门初始化函数 { vavle_task_id = TMOS_ProcessEventRegister(VAVLE_Task_ProcessEvent); - tmos_memset(&gValveData, 0, sizeof(gValveData)); - gValveData.switch_status = kClosed; // 设置阀门状态为关闭 gValveData.temp = -100; gValveData.in_pressure = 0; gValveData.out_pressure = 0;