2.2V低压关阀,VAVLE_LOOP_DECT_EVT和performPeriodicTask错开?升压时候别测

This commit is contained in:
stark1898y 2025-05-30 16:36:43 +08:00
parent 82b0fd0a4f
commit 1f6020a3a9
4 changed files with 81 additions and 89 deletions

View File

@ -730,37 +730,9 @@ static void peripheralStateNotificationCB(gapRole_States_t newState, gapRoleEven
*/
static void performPeriodicTask(void)
{
if (boost_en_flag == 0 && GPIOA_ReadITFlagBit(BOOST_APIN) == 0)
{
gValveData.bat = BSP_ReadVbat();
#if 0
BSP_BlockSleep();
BSP_RequestBoost();
// DelayMs(1);
ShowLed();
DelayMs(2);
LED_ALL_OFF_DEINIT;
// BEEP_OFF_DEINIT;
BSP_NoNeedBoost();
BSP_RequestSleep();
#endif
// // 如果电压低就都不亮灯、蜂鸣器
// if (bat_mv <= LOW_VABAT_CLOSE_MV)
// {
// logDebug("低压关阀");
// tmos_set_event(vavle_task_id, VAVLE_CLOSE_START_EVT);
// }
// 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)
// {
// tmos_set_event(vavle_task_id, VAVLE_LOW_VBAT_ALARM_EVT);
// }
// TODO温湿度传感器读错的话就不发了
float _humi, _temp;
if (BSP_ReadTempHumi(&_humi, &_temp) == 0)
@ -790,6 +762,11 @@ static void performPeriodicTask(void)
peripheralChar4Notify(&RawData.buf[0], RawData.len);
tmos_set_event(led_task_id, LED_SHOW_START_EVT);
}
else if(GPIOA_ReadITFlagBit(BOOST_APIN) == 1)
{
tmos_start_task(Peripheral_TaskID, SBP_PERIODIC_EVT, MS1_TO_SYSTEM_TIME(1000));
}
}
/*********************************************************************

View File

@ -30,18 +30,19 @@ extern tmosTaskID led_task_id;
/**********************BOOST 12V_EN PA1************************ */
#define BOOST_APIN GPIO_Pin_1
#define BOOST_EN \
do \
{ \
GPIOA_SetBits(GPIO_Pin_1); \
GPIOA_ModeCfg(GPIO_Pin_1, GPIO_ModeOut_PP_5mA); \
GPIOA_SetBits(BOOST_APIN); \
GPIOA_ModeCfg(BOOST_APIN, GPIO_ModeOut_PP_5mA); \
} while (0);
#define BOOST_OFF_DEINIT \
do \
{ \
GPIOA_ResetBits(GPIO_Pin_1); \
GPIOA_ModeCfg(GPIO_Pin_1, GPIO_ModeIN_PD); \
GPIOA_ResetBits(BOOST_APIN); \
GPIOA_ModeCfg(BOOST_APIN, GPIO_ModeIN_PD); \
} while (0);
/***********************BEEP PA0************************ */

View File

@ -2,7 +2,7 @@
* @Author : stark1898y 1658608470@qq.com
* @Date : 2024-12-12 15:55:38
* @LastEditors : stark1898y 1658608470@qq.com
* @LastEditTime : 2025-05-30 13:51:02
* @LastEditTime : 2025-05-30 16:33:29
* @FilePath : \BLE_TYQ_CH584M\BSP\inc\bsp_valve.h
* @Description :
*
@ -15,6 +15,8 @@
extern tmosTaskID vavle_task_id;
extern volatile uint8_t boost_en_flag;
#define VAVLE_RX_DATA_EVT (0x0001 << 0)
#define VAVLE_TX_DATA_EVT (0x0001 << 1)
@ -38,7 +40,7 @@ extern tmosTaskID vavle_task_id;
// #define VALVE_LOW_VBAT_ALARM_PERIOD_MS (1000 * 60 * 10)
#define VALVE_DECT_PERIOD_MS (1000 * 60 * 10)
#define VALVE_DECT_PERIOD_MS (1000 * 60 * 3)
#define CHARGE_TIME_MS (2000)
@ -48,7 +50,7 @@ extern tmosTaskID vavle_task_id;
// #define LOW_VABAT_CLOSE_VALUE 2000
#define LOW_VABAT_CLOSE_MV 2150
#define LOW_VABAT_CLOSE_MV 2200
#define HIGN_TEMP_CLOSE_C 60

View File

@ -2,7 +2,7 @@
* @Author : stark1898y 1658608470@qq.com
* @Date : 2024-12-15 15:01:15
* @LastEditors : stark1898y 1658608470@qq.com
* @LastEditTime : 2025-05-29 18:42:42
* @LastEditTime : 2025-05-30 16:30:38
* @FilePath : \BLE_TYQ_CH584M\BSP\src\bsp_valve.c
* @Description :
*
@ -31,6 +31,8 @@
#undef LOG_TAG
#define LOG_TAG "BSP_VALVE"
volatile uint8_t boost_en_flag;
TsValveData gValveData = {0};
uint16_t bat_mv;
@ -393,10 +395,11 @@ static uint16_t VAVLE_Task_ProcessEvent(uint8_t task_id, uint16_t events)
if (events & VAVLE_CLOSE_START_EVT)
{
logDebug("VAVLE_CLOSE_START_EVT");
DelayMs(1);
// DelayMs(1);
BSP_BlockSleep();
BSP_RequestBoost();
DelayMs(10);
boost_en_flag = 1;
// DelayMs(10);
EMV_CHARGE_EN;
@ -468,6 +471,7 @@ static uint16_t VAVLE_Task_ProcessEvent(uint8_t task_id, uint16_t events)
tmos_set_event(Peripheral_TaskID, SBP_REPLY_CMD_EVT);
logDebug("VAVLE_CLOSE_END_EVT");
boost_en_flag = 0;
return (events ^ VAVLE_CLOSE_END_EVT);
}
// 开始测量电磁铁电感
@ -533,7 +537,8 @@ static uint16_t VAVLE_Task_ProcessEvent(uint8_t task_id, uint16_t events)
if (events & VAVLE_LOOP_DECT_EVT)
{
logDebug("VAVLE_LOOP_DECT_EVT");
if (GPIOA_ReadITFlagBit(BOOST_APIN) == 0)
{
// TODO亮灯或者蜂鸣器的时候读电压就低了
gValveData.bat = BSP_ReadVbat();
@ -542,7 +547,8 @@ static uint16_t VAVLE_Task_ProcessEvent(uint8_t task_id, uint16_t events)
if (bat_mv <= LOW_VABAT_CLOSE_MV)
{
gValveData.switch_status = kClosed;
tmos_set_event(vavle_task_id, VAVLE_CLOSE_START_EVT);
logDebug("低压关阀");
tmos_start_task(vavle_task_id, VAVLE_CLOSE_START_EVT, MS1_TO_SYSTEM_TIME(1100));
}
// else if (gValveData.bat <= LOW_VABAT_ALARM_VALUE)
// {
@ -556,7 +562,7 @@ static uint16_t VAVLE_Task_ProcessEvent(uint8_t task_id, uint16_t events)
if (gValveData.temp >= HIGN_TEMP_CLOSE_C)
{
logDebug("高温关阀");
tmos_set_event(vavle_task_id, VAVLE_CLOSE_START_EVT);
tmos_start_task(vavle_task_id, VAVLE_CLOSE_START_EVT, MS1_TO_SYSTEM_TIME(1000));
}
}
else
@ -564,6 +570,12 @@ static uint16_t VAVLE_Task_ProcessEvent(uint8_t task_id, uint16_t events)
logError("Read TempHumi Err");
}
tmos_start_task(vavle_task_id, VAVLE_LOOP_DECT_EVT, MS1_TO_SYSTEM_TIME(VALVE_DECT_PERIOD_MS));
}
else
{
// 延后5s再测
tmos_start_task(vavle_task_id, VAVLE_LOOP_DECT_EVT, MS1_TO_SYSTEM_TIME(5000));
}
return (events ^ VAVLE_LOOP_DECT_EVT);
}
@ -660,7 +672,7 @@ void BSP_VAVLE_Init(void)
gValveData.type = kTyq;
gValveData.bat = BSP_ReadVbat();
tmos_start_task(vavle_task_id, VAVLE_LOOP_DECT_EVT, MS1_TO_SYSTEM_TIME(1000));
tmos_start_task(vavle_task_id, VAVLE_LOOP_DECT_EVT, MS1_TO_SYSTEM_TIME(VALVE_DECT_PERIOD_MS));
// GPIOA_ResetBits(GPIO_Pin_2);
// GPIOA_ModeCfg(GPIO_Pin_2, GPIO_ModeIN_PU);