暂存2.45V

This commit is contained in:
stark1898y 2025-05-28 19:29:52 +08:00
parent 63fb71a9de
commit 9eb7a8affd
10 changed files with 135 additions and 91 deletions

View File

@ -5,7 +5,7 @@
"type": "mrs-debugger",
"request": "launch",
"name": "BLE_TYQ_CH584M",
"cwd": "f:\\BaiduSyncdisk\\SXDT\\BLE_TYQ\\Firmware\\BLE_TYQ_CH584M",
"cwd": "c:\\Users\\16586\\Desktop\\BLE_TYQ_CH584M",
"openOCDCfg": {
"useLocalOpenOCD": true,
"executable": "c:/MounRiver/MounRiver_Studio2/resources/app/resources/win32/components/WCH/OpenOCD/OpenOCD/bin/openocd.exe",
@ -39,8 +39,8 @@
"additionalCommands": []
},
"loadedFiles": {
"executableFile": "f:\\BaiduSyncdisk\\SXDT\\BLE_TYQ\\Firmware\\BLE_TYQ_CH584M\\obj\\BLE_TYQ_CH584M.elf",
"symbolFile": "f:\\BaiduSyncdisk\\SXDT\\BLE_TYQ\\Firmware\\BLE_TYQ_CH584M\\obj\\BLE_TYQ_CH584M.elf",
"executableFile": "c:\\Users\\16586\\Desktop\\BLE_TYQ_CH584M\\obj\\BLE_TYQ_CH584M.elf",
"symbolFile": "c:\\Users\\16586\\Desktop\\BLE_TYQ_CH584M\\obj\\BLE_TYQ_CH584M.elf",
"executableFileOffset": 0,
"symbolFileOffset": 0
},

View File

@ -3,8 +3,8 @@
* Author : WCH
* Version : V1.0
* Date : 2018/12/10
* Description : 广广
*
* Description : 广广
*
*********************************************************************************
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
* Attention: This software (modified or not) and binary are used for
@ -91,8 +91,8 @@ void BSP_NoNeeedReplyCMd(void)
uint8_t Peripheral_TaskID = INVALID_TASK_ID; // Task ID for internal task/event processing
// 蓝牙广播包的最大长度是37个字节其中设备地址占用了6个字节只有31个字节是可用的。
// TODO:响应体名称加上MAC地址
// 蓝牙广播包的最大长度是37个字节其中设备地址占用了6个字节只有31个字节是可用的。
// TODO:响应体名称加上MAC地址
// GAP - SCAN RSP data (max size = 31 bytes)
static uint8_t scanRspData[] = {
// complete name
@ -217,11 +217,11 @@ void Peripheral_Init()
// Setup the GAP Peripheral Role Profile
{
// 开启广播使能
// 开启广播使能
uint8_t initial_advertising_enable = TRUE;
// 最小连接间隔
// 最小连接间隔
uint16_t desired_min_interval = DEFAULT_DESIRED_MIN_CONN_INTERVAL;
// 最大连接间隔
// 最大连接间隔
uint16_t desired_max_interval = DEFAULT_DESIRED_MAX_CONN_INTERVAL;
// Set the GAP Role Parameters
@ -241,8 +241,8 @@ void Peripheral_Init()
GAP_SetParamValue(TGAP_DISC_ADV_INT_MAX, advInt);
// https://www.cnblogs.com/debugdabiaoge/p/17871551.html
// 默认从机在回复扫描请求后,会结束广播事件(默认广播应该是 37 38 39 在 3 个信道轮发)
// 如下使能后,可以保证广播包不受扫描请求的影响
// 默认从机在回复扫描请求后,会结束广播事件(默认广播应该是 37 38 39 在 3 个信道轮发)
// 如下使能后,可以保证广播包不受扫描请求的影响
// uint16_t adv_event_contnue=1<<1;
// GAP_SetParamValue(TGAP_ADV_SCAN_REQ_NOTIFY, adv_event_contnue);
@ -370,7 +370,7 @@ uint16_t Peripheral_ProcessEvent(uint8_t task_id, uint16_t events)
}
if (events & SBP_PERIODIC_EVT)
{
// 防止主机下发指令,从机回复响应的时候,先传的是状态数据
// 防止主机下发指令,从机回复响应的时候,先传的是状态数据
if (periodic_upload_block_flag == false && mtu_flag == 1)
{
// Perform periodic application task
@ -380,7 +380,7 @@ uint16_t Peripheral_ProcessEvent(uint8_t task_id, uint16_t events)
}
else
{
// 需要等先回复了下发的指令1s 之后再尝试回复状态数据
// 需要等先回复了下发的指令1s 之后再尝试回复状态数据
tmos_start_task(Peripheral_TaskID, SBP_PERIODIC_EVT, MS1_TO_SYSTEM_TIME(1000));
}
return (events ^ SBP_PERIODIC_EVT);
@ -480,9 +480,11 @@ static void Peripheral_ProcessTMOSMsg(tmos_event_hdr_t *pMsg)
peripheralMTU = pMsgEvent->msg.exchangeMTUReq.clientRxMTU;
mtu_flag = 1;
logDebug("****mtu exchange: %d****", pMsgEvent->msg.exchangeMTUReq.clientRxMTU);
// TODO连上之后先给个状态回应
// TODO连上之后先给个状态回应
// tmos_set_event(vavle_task_id, VAVLE_UPDATE_EVT);
performPeriodicTask();
// gValveData.bat = BSP_ReadVbat();
tmos_set_event(led_task_id, CONNECT_BEEP_START_EVT);
}
break;
@ -530,7 +532,7 @@ static void Peripheral_LinkEstablished(gapRoleEvent_t *pEvent)
tmos_start_task(Peripheral_TaskID, SBP_READ_RSSI_EVT, SBP_READ_RSSI_EVT_PERIOD);
// https://www.cnblogs.com/ZYL-FS/p/17759138.html
// 使能通知
// 使能通知
enable_notify(peripheralConnList.connHandle, ENABLE);
logDebug("Conn %x - Int %x= %.1fms", event->connectionHandle, event->connInterval, event->connInterval * 1.25);
@ -561,7 +563,7 @@ static void Peripheral_LinkTerminated(gapRoleEvent_t *pEvent)
// Restart advertising
{
// 三个广播通道全部打开
// 三个广播通道全部打开
// uint8_t init_adv_channel_map = GAP_ADVCHAN_ALL ;
// GAPRole_SetParameter( GAPROLE_ADV_CHANNEL_MAP, sizeof( uint8_t ), &init_adv_channel_map);
@ -658,7 +660,7 @@ static void peripheralStateNotificationCB(gapRole_States_t newState, gapRoleEven
Peripheral_LinkEstablished(pEvent);
logDebug("Connected..");
// 在蓝牙建立连接之后,调用 GATT ExchangeMTU 来修改 MTU 的值
// 在蓝牙建立连接之后,调用 GATT ExchangeMTU 来修改 MTU 的值
// Update MTU
attExchangeMTUReq_t req = {
.clientRxMTU = BLE_BUFF_MAX_LEN - 4,
@ -748,22 +750,32 @@ static void performPeriodicTask(void)
BSP_NoNeedBoost();
BSP_RequestSleep();
#endif
// 电压过低就关阀
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);
}
// // 如果电压低就都不亮灯、蜂鸣器
// 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);
// }
float _humi, _temp;
if (BSP_ReadTempHumi(&_humi, &_temp) == 0)
{
gValveData.temp = (int8_t)_temp;
gValveData.humi = (uint8_t)_humi;
if (gValveData.temp >= HIGN_TEMP_CLOSE_C)
{
logDebug("高温关阀");
tmos_set_event(vavle_task_id, VAVLE_CLOSE_START_EVT);
}
}
else
{
@ -864,7 +876,7 @@ static void simpleProfileChangeCB(uint8_t paramID, uint8_t *pValue, uint16_t len
// tmos_memcpy(newValue, pValue, len);
logDebug("CHAR3 Start");
// logHexDumpAll(newValue, len);
// TODO:发送rev数据
// TODO:发送rev数据
uint8_t *p_rev_msg;
// TsValveMsg *ValveMsg;
// ValveMsg = tmos_msg_allocate(len);
@ -886,13 +898,13 @@ static void simpleProfileChangeCB(uint8_t paramID, uint8_t *pValue, uint16_t len
}
else
{
logError("内存不足");
logError("内存不足");
}
#if 0
TsFrameData *HostFrameData = BSP_VAVLE_GetFrameData(newValue, len);
if (HostFrameData != NULL)
{
// logHexDumpAll(&HostFrameData->data[0], HostFrameData->len); // 数据段
// logHexDumpAll(&HostFrameData->data[0], HostFrameData->len); // 数据段
// BSP_UART1_TxLoop();
// HR_ProcessData(HostFrameData);
switch (HostFrameData->cmd)
@ -900,25 +912,25 @@ static void simpleProfileChangeCB(uint8_t paramID, uint8_t *pValue, uint16_t len
case kCmdCfg:
// uint8_t data_buf[64] = {0};
// tmos_memset(data_buf, 0, sizeof(data_buf));
// 处理数据帧
// 处理数据帧
logDebug("kCmdCfg");
break;
case kCmdCloseVavle:
logDebug("kCmdCloseVavle");
// TODO:注意这里
// TODO:注意这里
BSP_NeeedReplyCMdFirst();
// EMV_CHARGE
EMV_CHARGE_EN;
logDebug("EMV_CHARGE_EN");
// 开始一个定时event,1s后产生,当前语句只会产生一次event
// 可以在event产生后去开启event,可以是别的task的,也可以是当前task的event
// 开始一个定时event,1s后产生,当前语句只会产生一次event
// 可以在event产生后去开启event,可以是别的task的,也可以是当前task的event
tmos_start_task(vavle_task_id, VAVLE_CLOSE_ACTION_EVT, MS1_TO_SYSTEM_TIME(CHARGE_TIME_MS));
// BSP_VALVE_Generate_ValveResponse(&RawData, kCmdCloseVavle, 1);
// // TODO: 关阀动作
// // TODO: 关阀动作
// peripheralChar4Notify((uint8_t *)&RawData.buf[0], RawData.len);
break;
@ -929,14 +941,14 @@ static void simpleProfileChangeCB(uint8_t paramID, uint8_t *pValue, uint16_t len
// BSP_UART1_TxLoop();
break;
default:
logError("无效的命令");
logError("无效的命令");
// logHexDumpAll(data, len);
break;
}
}
else
{
logError("数据帧解析失败");
logError("数据帧解析失败");
}
tmos_msg_deallocate((uint8_t *)HostFrameData);
HostFrameData = NULL;
@ -954,12 +966,12 @@ static void simpleProfileChangeCB(uint8_t paramID, uint8_t *pValue, uint16_t len
#if 0
// TODO:应用加入广播数据更新部分状态数据
// 动态更新广播数据
// taskID 请求更改广播任务的 ID
// adTypeTRUE 更改广播数据FALSE 更改扫描回复数据
// datalen数据长度
// *pAdvertData数据指针
// TODO:应用加入广播数据更新部分状态数据
// 动态更新广播数据
// taskID 请求更改广播任务的 ID
// adTypeTRUE 更改广播数据FALSE 更改扫描回复数据
// datalen数据长度
// *pAdvertData数据指针
void Peripheral_UpdateAdvertData(uint8_t adType, uint8_t dataLen, uint8_t *pAdvertData)
{
GAP_UpdateAdvertisingData(Peripheral_TaskID, adType, dataLen, pAdvertData);
@ -968,12 +980,12 @@ void Peripheral_UpdateAdvertData(uint8_t adType, uint8_t dataLen, uint8_t *pAdve
#include "stdio.h"
#include "stdarg.h"
// TODO:先不弄,后面改广播名,应用加入广播数据更新部分状态数据
// TODO:先不弄,后面改广播名,应用加入广播数据更新部分状态数据
void Peripheral_SetMacName(void)
{
uint8_t mac_addr[6];
GetMACAddress(mac_addr);
// 手机APP显示是倒序的[5-0],不是[0-5]
// 手机APP显示是倒序的[5-0],不是[0-5]
logDebug("MacAddr: %02X:%02X:%02X:%02X:%02X:%02X", mac_addr[0], mac_addr[1]
, mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]);
@ -1005,7 +1017,7 @@ void Peripheral_SetMacName(void)
// logDebug("scan_rsp_data:");
logHexDumpAll(scan_rsp_data, len);
// // 更新扫描响应体
// // 更新扫描响应体
GAP_UpdateAdvertisingData(Peripheral_TaskID, FALSE, scan_rsp_data, len);
}
#endif

View File

@ -36,12 +36,13 @@ void app_task_handler(TeAppEvtType app_evt_type)
{
// FEED_IWDG();
gValveData.bat = BSP_ReadVbat();
BSP_RequestBoost();
DelayMs(5);
// BSP_RequestBoost();
BSP_BlockSleep();
BSP_RequestBoost();
logDebug("BSP_RequestBoost");
DelayMs(5);
// DelayMs(5);
#if 1
switch (app_evt_type)
@ -62,16 +63,19 @@ void app_task_handler(TeAppEvtType app_evt_type)
{
logDebug("LED显示状态");
// tmos_set_event(led_task_id, LED_SHOW_START_EVT);
BSP_BlockSleep();
// BSP_BlockSleep();
// BSP_RequestBoost();
DelayMs(5);
// DelayMs(5);
// ShowLed();
// 电压过低就关阀
// if (gValveData.bat <= LOW_VABAT_ALARM_VALUE)
if (gValveData.bat <= LOW_VABAT_ALARM_VALUE)
if (bat_mv <= LOW_VABAT_CLOSE_MV)
// if (gValveData.bat <= LOW_VABAT_ALARM_VALUE)
{
LED_ALL_OFF_DEINIT;
LED_Y_ON;
// DelayMs(50);
// LED_ALL_OFF_DEINIT;
// BEEP_ON;
logDebug("LED_Y_ON");
@ -80,14 +84,17 @@ void app_task_handler(TeAppEvtType app_evt_type)
{
LED_ALL_OFF_DEINIT;
LED_R_ON;
// DelayMs(50);
// LED_ALL_OFF_DEINIT;
logDebug("LED_R_ON");
}
else if (gValveData.switch_status == kOpened)
{
LED_ALL_OFF_DEINIT;
LED_G_ON;
// DelayMs(50);
// LED_ALL_OFF_DEINIT;
logDebug("LED_G_ON");
}
@ -103,20 +110,23 @@ void app_task_handler(TeAppEvtType app_evt_type)
gValveData.switch_status = kOpened;
BSP_BlockSleep();
// BSP_RequestBoost();
DelayMs(5);
// DelayMs(5);
// ShowLed();
if (gValveData.switch_status == kUnknown || gValveData.switch_status == kClosed)
{
LED_ALL_OFF_DEINIT;
LED_R_ON;
// DelayMs(50);
// LED_ALL_OFF_DEINIT;
logDebug("LED_R_ON");
}
else if (gValveData.switch_status == kOpened)
{
LED_ALL_OFF_DEINIT;
LED_G_ON;
// DelayMs(50);
// LED_ALL_OFF_DEINIT;
logDebug("LED_G_ON");
}
@ -132,12 +142,14 @@ void app_task_handler(TeAppEvtType app_evt_type)
// tmos_set_event(led_task_id, LED_SHOW_START_EVT);
BSP_BlockSleep();
// BSP_RequestBoost();
DelayMs(5);
// DelayMs(5);
// ShowLed();
if (gValveData.switch_status == kUnknown || gValveData.switch_status == kClosed)
{
LED_ALL_OFF_DEINIT;
LED_R_ON;
// DelayMs(50);
// LED_ALL_OFF_DEINIT;
logDebug("LED_R_ON");
}
@ -146,6 +158,8 @@ void app_task_handler(TeAppEvtType app_evt_type)
LED_ALL_OFF_DEINIT;
LED_G_ON;
// DelayMs(50);
// LED_ALL_OFF_DEINIT;
logDebug("LED_G_ON");
}
@ -232,9 +246,9 @@ int main(void)
PWR_DCDCCfg(ENABLE);
#endif
// 32Mhz/10ppm/10pF
HSECFG_Capacitance(HSECap_18p);
// HSECFG_Capacitance(HSECap_18p);
// USE 32Mhz/10ppm/12pF
// HSECFG_Capacitance(HSECap_20p);
HSECFG_Capacitance(HSECap_20p);
SetSysClock(CLK_SOURCE_HSE_PLL_62_4MHz);
#if (defined(HAL_SLEEP)) && (HAL_SLEEP == TRUE)
@ -259,7 +273,8 @@ int main(void)
uint8_t MacAddr[6];
GetMACAddress(MacAddr);
// 手机APP显示是倒序的[5-0],不是[0-5]
logDebug("MacAddr: %02X:%02X:%02X:%02X:%02X:%02X", MacAddr[0], MacAddr[1], MacAddr[2], MacAddr[3], MacAddr[4], MacAddr[5]);
logDebug("MacAddr: %02X:%02X:%02X:%02X:%02X:%02X", MacAddr[5], MacAddr[4]
, MacAddr[3], MacAddr[2], MacAddr[1], MacAddr[0]);
CH58x_BLEInit();
HAL_Init();
@ -276,9 +291,6 @@ int main(void)
BSP_VAVLE_Init();
// DelayMs(2000 * 1);
BSP_BlockSleep();
BSP_RequestBoost();
DelayMs(100);
// 如果电压低就都不亮灯、蜂鸣器
if (bat_mv <= LOW_VABAT_CLOSE_MV)
@ -287,20 +299,25 @@ int main(void)
}
else
{
BSP_BlockSleep();
BSP_RequestBoost();
DelayMs(1);
ShowLed();
BEEP_ON;
DelayMs(500);
DelayMs(30);
LED_ALL_OFF_DEINIT;
BEEP_OFF_DEINIT;
BSP_NoNeedBoost();
BSP_RequestSleep();
}
LED_ALL_OFF_DEINIT;
BEEP_OFF_DEINIT;
BSP_NoNeedBoost();
BSP_RequestSleep();
IWDG_Init(IWDG_TIMEOUT_MS);
logDebug("BSP_Get_Tick1 %d", BSP_Get_Tick());
DelayMs(1000);
logDebug("BSP_Get_Tick2 %d", BSP_Get_Tick());
// logDebug("BSP_Get_Tick1 %d", BSP_Get_Tick());
// DelayMs(1000);
// logDebug("BSP_Get_Tick2 %d", BSP_Get_Tick());
// 在连接间隔和广播间隔到来时,会进入回调中喂狗
// LL_AdvertiseEventRegister(BLE_AdvertiseEventCB);

View File

@ -21,7 +21,7 @@
#define RB_WR_PROTECT 0x40000000 // RO, write protect
#define RB_IWDG_EN 0x80000000 // RO, watch-dog enable
#define IWDG_TIMEOUT_MS (4000)
#define IWDG_TIMEOUT_MS (10000)
#define IWDG_FEED_MS (3000)
#define IWIG_FEED_EVENT (0x01 << 0)

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-28 13:38:08
* @LastEditTime : 2025-05-28 18:00:21
* @FilePath : \BLE_TYQ_CH584M\BSP\inc\bsp_valve.h
* @Description :
*
@ -23,14 +23,14 @@ extern tmosTaskID vavle_task_id;
#define VAVLE_CLOSE_ACTION_EVT (0x0001 << 3) // 关阀,动作
#define VAVLE_CLOSE_END_EVT (0x0001 << 4) // 关阀结束
#define VAVLE_DECT_SWITCH_START_EVT (0x0001 << 5) // 检测电磁铁
#define VAVLE_DECT_SWITCH_END_EVT (0x0001 << 6) // 检测电磁铁
#define VAVLE_DECT_SWITCH_START_EVT (0x0001 << 5) // 检测电磁铁
#define VAVLE_DECT_SWITCH_END_EVT (0x0001 << 6) // 检测电磁铁
#define VAVLE_LOW_VBAT_ALARM_EVT (0x0001 << 7) // 低电压提醒
#define VAVLE_LOOP_DECT_EVT (0x0001 << 8) // 循环检测
#define VAVLE_DECT_SWITCH_CALIB_EVT (0x0001 << 9) // 标定电磁铁
#define VAVLE_DECT_SWITCH_CALIB_EVT (0x0001 << 9) // 标定电磁铁
#define VAVLE_UPDATE_EVT (0x0001 << 10) // 上传更行阀门状态
@ -48,9 +48,10 @@ extern tmosTaskID vavle_task_id;
#define LOW_VABAT_CLOSE_VALUE 23
#define LOW_VABAT_CLOSE_MV 2350
#define LOW_VABAT_CLOSE_MV 2450
#define HIGN_TEMP_CLOSE_C 60
#define FRAME_HEADER 0xAA
#define FRAME_TAIL 0x55

View File

@ -3,6 +3,8 @@
#include "bsp_uart.h"
#include "log.h"
#include "SLEEP.h"
#include "bsp_valve.h"
#undef LOG_ENABLE
@ -31,6 +33,10 @@ double voltage = 0;
uint8_t BSP_ReadVbat(void)
{
uint8_t i;
BSP_NoNeedBoost();
DelayMs(1);
// VBAT
uint32_t CountBat = 0;

View File

@ -102,12 +102,12 @@ static tmosEvents LED_Task_ProcessEvent(tmosTaskID taskID, tmosEvents event)
if (event & CONNECT_BEEP_START_EVT)
{
logDebug("CONNECT_BEEP_START_EVT");
LED_G_ON;
// LED_G_ON;
BSP_BlockSleep();
BSP_RequestBoost();
BEEP_ON;
tmos_start_task(led_task_id, CONNECT_BEEP_END_EVT, MS1_TO_SYSTEM_TIME(300));
tmos_start_task(led_task_id, CONNECT_BEEP_END_EVT, MS1_TO_SYSTEM_TIME(20));
return (event ^ CONNECT_BEEP_START_EVT);
}

View File

@ -37,6 +37,7 @@ uint16_t IWDG_ProcessEvent(uint8_t task_id, uint16_t events)
// logDebug("IWDG feed");
// 获取tmos系统堆的剩余内存大小
// uint8_t* a = tmos_msg_allocate(1);
uint32_t tmos_memory_getlen(void);
logDebug("tmos_memory_getlen = %d" , tmos_memory_getlen());
// tmos_start_task(task_id, IWIG_FEED_EVENT, MS1_TO_SYSTEM_TIME(IWDG_FEED_MS));
return (events ^ IWIG_FEED_EVENT);

View File

@ -36,7 +36,7 @@ static void KEY_Task_ProcessTmosMsg(tmos_event_hdr_t *pMsg)
}
#if 1
// __HIGH_CODE
__HIGH_CODE
static uint16_t KEY_Task_ProcessEvent(uint8_t task_id, uint16_t events)
{
if (events & SYS_EVENT_MSG)

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-28 09:03:24
* @LastEditTime : 2025-05-28 18:05:13
* @FilePath : \BLE_TYQ_CH584M\BSP\src\bsp_valve.c
* @Description :
*
@ -11,6 +11,8 @@
#include "bsp_valve.h"
#include "bsp_flash.h"
#include "bsp_i2c.h"
#include "bsp_beep_led_emv.h"
// 0xAA CMD/DATA/ DATA_LEN (DATA) checksum 0x55
@ -390,20 +392,10 @@ 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);
BSP_BlockSleep();
BSP_RequestBoost();
DelayUs(200);
// EMV_CHARGE
// EMV_CHARGE_EN;
// DelayUs(500);
// EMV_CHARGE_OFF_DEINIT;
// DelayUs(200);
// DelayUs(500);
// EMV_CHARGE_OFF_DEINIT;
// DelayUs(200);
DelayMs(10);
EMV_CHARGE_EN;
@ -421,7 +413,7 @@ static uint16_t VAVLE_Task_ProcessEvent(uint8_t task_id, uint16_t events)
BSP_RequestBoost();
logDebug("VAVLE_CLOSE_ACTION_EVT");
BOOST_EN;
// BOOST_EN;
// EMV_CHARGE_EN;
// 关阀动作,一定要先关充电的防止其他12V用电
EMV_CHARGE_OFF_DEINIT;
@ -553,6 +545,21 @@ static uint16_t VAVLE_Task_ProcessEvent(uint8_t task_id, uint16_t events)
// {
// tmos_set_event(vavle_task_id, VAVLE_LOW_VBAT_ALARM_EVT);
// }
float _humi, _temp;
if (BSP_ReadTempHumi(&_humi, &_temp) == 0)
{
gValveData.temp = (int8_t)_temp;
gValveData.humi = (uint8_t)_humi;
if (gValveData.temp >= HIGN_TEMP_CLOSE_C)
{
logDebug("高温关阀");
tmos_set_event(vavle_task_id, VAVLE_CLOSE_START_EVT);
}
}
else
{
logError("Read TempHumi Err");
}
tmos_start_task(vavle_task_id, VAVLE_LOOP_DECT_EVT, MS1_TO_SYSTEM_TIME(VALVE_DECT_PERIOD_MS));
return (events ^ VAVLE_LOOP_DECT_EVT);