暂存,装004阀门

This commit is contained in:
stark1898y 2024-12-17 14:51:12 +08:00
parent a3a95c5d0c
commit 19312b9ae0
15 changed files with 396 additions and 210 deletions

View File

@ -2,6 +2,7 @@ eclipse.preferences.version=1
encoding//APP/peripheral_main.c=UTF-8 encoding//APP/peripheral_main.c=UTF-8
encoding//BSP/inc/bsp_valve.h=UTF-8 encoding//BSP/inc/bsp_valve.h=UTF-8
encoding//BSP/src/bsp_adc.c=UTF-8 encoding//BSP/src/bsp_adc.c=UTF-8
encoding//BSP/src/bsp_beep_led_emv.c=UTF-8
encoding//BSP/src/bsp_i2c.c=UTF-8 encoding//BSP/src/bsp_i2c.c=UTF-8
encoding//BSP/src/bsp_key.c=UTF-8 encoding//BSP/src/bsp_key.c=UTF-8
encoding//BSP/src/bsp_valve.c=UTF-8 encoding//BSP/src/bsp_valve.c=UTF-8

View File

@ -17,6 +17,7 @@
"stdarg.h": "c", "stdarg.h": "c",
"bsp_flash.h": "c", "bsp_flash.h": "c",
"bsp_valve.h": "c", "bsp_valve.h": "c",
"log.h": "c" "log.h": "c",
"hal.h": "c"
} }
} }

View File

@ -27,6 +27,10 @@
#include "bsp_i2c.h" #include "bsp_i2c.h"
#include "bsp_adc.h" #include "bsp_adc.h"
#include "bsp_beep_led_emv.h"
#include "SLEEP.h"
#undef LOG_ENABLE #undef LOG_ENABLE
#define LOG_ENABLE 1 #define LOG_ENABLE 1
@ -48,7 +52,7 @@ void BSP_NoNeeedReplyCMd(void)
} }
// How often to perform periodic event // How often to perform periodic event
#define SBP_PERIODIC_EVT_PERIOD (160 * 10 * 5) // (160 = 100ms) #define SBP_PERIODIC_EVT_PERIOD (1600 * 60) // (160 = 100ms)
// How often to perform read rssi event // How often to perform read rssi event
#define SBP_READ_RSSI_EVT_PERIOD (1600 * 3) // (160 = 100ms) #define SBP_READ_RSSI_EVT_PERIOD (1600 * 3) // (160 = 100ms)
@ -721,6 +725,29 @@ static void performPeriodicTask(void)
{ {
gValveData.bat = BSP_ReadVbat(); gValveData.bat = BSP_ReadVbat();
BSP_BlockSleep();
BSP_RequestBoost();
// DelayMs(1);
ShowLed();
DelayMs(5);
LED_ALL_OFF_DEINIT;
// BEEP_OFF_DEINIT;
BSP_NoNeedBoost();
BSP_RequestSleep();
// µçѹ¹ýµÍ¾Í¹Ø·§
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; float _humi, _temp;
if (BSP_ReadTempHumi(&_humi, &_temp) == 0) if (BSP_ReadTempHumi(&_humi, &_temp) == 0)
{ {

View File

@ -41,27 +41,58 @@
__attribute__((aligned(4))) uint32_t MEM_BUF[BLE_MEMHEAP_SIZE / 4]; __attribute__((aligned(4))) uint32_t MEM_BUF[BLE_MEMHEAP_SIZE / 4];
static uint8_t key_cnt = 0;
static uint8_t key_press_cnt = 0;
void app_task_handler(TeAppEvtType app_evt_type) void app_task_handler(TeAppEvtType app_evt_type)
{ {
BSP_BlockSleep();
switch(app_evt_type) switch(app_evt_type)
{ {
case kKeyShort: case kKeyShort:
logDebug("button short press"); logDebug("button short press");
key_cnt++; key_press_cnt++;
if (key_cnt == 1) logDebug("key_press_cnt = %d", key_press_cnt);
if (key_press_cnt == 1)
{ {
// TODO:LED显示状态 logDebug("LED显示状态");
// tmos_set_event(led_task_id, LED_SHOW_START_EVT);
BSP_BlockSleep();
BSP_RequestBoost();
DelayMs(1);
ShowLed();
// tmos_stop_task(led_task_id, LED_SHOW_ONCE_EVT);
// tmos_start_task(led_task_id, LED_SHOW_ONCE_EVT, 1000);
} }
else if (key_cnt == 2) else if (key_press_cnt >= 2)
{ {
if (gValveData.switch_status == kClosed) if (gValveData.switch_status == kClosed)
{ {
logDebug("kClosed-->kOpened");
// tmos_set_event(led_task_id, LED_SHOW_START_EVT);
gValveData.switch_status = kOpened; gValveData.switch_status = kOpened;
BSP_BlockSleep();
BSP_RequestBoost();
DelayMs(1);
ShowLed();
// tmos_stop_task(led_task_id, LED_SHOW_ONCE_EVT);
// tmos_start_task(led_task_id, LED_SHOW_ONCE_EVT, 1000);
} }
else if (gValveData.switch_status == kOpened) else if (gValveData.switch_status != kClosed)
{ {
logDebug("kOpened-->kClosed");
gValveData.switch_status = kClosed;
tmos_set_event(vavle_task_id, VAVLE_CLOSE_START_EVT);
// tmos_set_event(led_task_id, LED_SHOW_START_EVT);
BSP_BlockSleep();
BSP_RequestBoost();
DelayMs(1);
ShowLed();
// tmos_stop_task(led_task_id, LED_SHOW_ONCE_EVT);
// tmos_start_task(led_task_id, LED_SHOW_ONCE_EVT, 1000);
} }
} }
break; break;
@ -73,8 +104,16 @@ void app_task_handler(TeAppEvtType app_evt_type)
case kKeyRelease: case kKeyRelease:
// BSP_KEY_EnterLowpower(); // BSP_KEY_EnterLowpower();
// DelayMs(10); // DelayMs(10);
key_cnt = 0; key_press_cnt = 0;
// BSP_RequestSleep();
// tmos_set_event(led_task_id, LED_SHOW_END_EVT);
LED_ALL_OFF_DEINIT;
BEEP_OFF_DEINIT;
BSP_NoNeedBoost();
BSP_RequestSleep(); BSP_RequestSleep();
logDebug("gpio relase;BSP_RequestSleep"); logDebug("gpio relase;BSP_RequestSleep");
break; break;
@ -193,33 +232,19 @@ int main(void)
#endif #endif
SetSysClock(CLK_SOURCE_PLL_60MHz); SetSysClock(CLK_SOURCE_PLL_60MHz);
#if (defined(HAL_SLEEP)) && (HAL_SLEEP == TRUE) #if (defined(HAL_SLEEP)) && (HAL_SLEEP == TRUE)
GPIOA_ModeCfg(GPIO_Pin_All, GPIO_ModeIN_PD); GPIOA_ModeCfg(GPIO_Pin_All, GPIO_ModeIN_PD);
GPIOB_ModeCfg(GPIO_Pin_All, GPIO_ModeIN_PD); GPIOB_ModeCfg(GPIO_Pin_All, GPIO_ModeIN_PD);
#endif #endif
#ifdef DEBUG #ifdef DEBUG
// GPIOA_SetBits(bTXD1);
// GPIOA_ModeCfg(bTXD1, GPIO_ModeOut_PP_5mA);
// UART1_DefInit();
// 改成1500000波特率了 // 改成1500000波特率了
BSP_UART1_Init(1500000); BSP_UART1_Init(1500000);
logDebug("Start @ChipID=%02X\n", R8_CHIP_ID); logDebug("Start @ChipID=%02X\n", R8_CHIP_ID);
logError("中文测试 %2.2f", 123.456); logError("中文测试 %2.2f", 123.456);
#endif #endif
DelayMs(1000 * 3); BSP_BEEP_LED_EMV_Init();
BOOST_OFF_DEINIT;
BEEP_OFF_DEINIT;
LED_ALL_OFF_DEINIT;
EMV_CHARGE_OFF_DEINIT;
EMV_OFF_DEINIT;
// BSP_ADC_Init();
CH59x_BLEInit(); CH59x_BLEInit();
logDebug("%s\n", VER_LIB); logDebug("%s\n", VER_LIB);
@ -234,25 +259,51 @@ int main(void)
// { // {
// DelayMs(1000); // DelayMs(1000);
// } // }
HAL_Init();
GAPRole_PeripheralInit();
Peripheral_Init();
// 在连接间隔和广播间隔到来时,会进入回调中喂狗
// LL_AdvertiseEventRegister(BLE_AdvertiseEventCB);
// LL_ConnectEventRegister(BLE_ConnectEventCB);
BSP_FLASH_Init(); BSP_FLASH_Init();
DelayMs(100); DelayMs(100);
GXHTC3C_Init(); GXHTC3C_Init();
BSP_KEY_Init(app_task_handler); BSP_KEY_Init(app_task_handler);
// IWDG_Init(1500); // IWDG_Init(1500);
DelayMs(1000 * 3);
BSP_ADC_Init();
BSP_VAVLE_Init(); BSP_VAVLE_Init();
HAL_Init();
GAPRole_PeripheralInit();
Peripheral_Init();
BSP_BlockSleep();
BSP_RequestBoost();
DelayMs(1);
ShowLed();
BEEP_ON;
DelayMs(1000 * 1);
LED_ALL_OFF_DEINIT;
BEEP_OFF_DEINIT;
BSP_NoNeedBoost();
BSP_RequestSleep();
// 在连接间隔和广播间隔到来时,会进入回调中喂狗
// LL_AdvertiseEventRegister(BLE_AdvertiseEventCB);
// LL_ConnectEventRegister(BLE_ConnectEventCB);
Main_Circulation(); Main_Circulation();
} }

View File

@ -2,8 +2,8 @@
* @Author : stark1898y 1658608470@qq.com * @Author : stark1898y 1658608470@qq.com
* @Date : 2024-12-09 09:50:56 * @Date : 2024-12-09 09:50:56
* @LastEditors : stark1898y 1658608470@qq.com * @LastEditors : stark1898y 1658608470@qq.com
* @LastEditTime : 2024-12-15 15:37:31 * @LastEditTime : 2024-12-17 10:49:46
* @FilePath : \BLE_TYQ_CH592F - \BSP\inc\bsp_beep_led_emv.h * @FilePath : \BLE_TYQ_CH592F\BSP\inc\bsp_beep_led_emv.h
* @Description : * @Description :
* *
* Copyright (c) 2024 by yzy, All Rights Reserved. * Copyright (c) 2024 by yzy, All Rights Reserved.
@ -14,6 +14,17 @@
#include "CONFIG.h" #include "CONFIG.h"
extern tmosTaskID led_task_id;
#define LED_SHOW_START_EVT (0x0001 << 0)
#define LED_SHOW_ONCE_EVT (0x0001 << 1)
#define LED_SHOW_END_EVT (0x0001 << 2)
#define CLOSE_VALVE_ACTION_EVT (0x0001 << 3)
#define LOW_VBAT_EVT (0x0001 << 4)
#define HIGH_TEMP_EVT (0x0001 << 5)
/**********************BOOST 12V_EN************************ */ /**********************BOOST 12V_EN************************ */
#define BOOST_EN \ #define BOOST_EN \
@ -106,5 +117,8 @@
GPIOB_ModeCfg(GPIO_Pin_12, GPIO_ModeIN_Floating); \ GPIOB_ModeCfg(GPIO_Pin_12, GPIO_ModeIN_Floating); \
} while (0); } while (0);
void BSP_BEEP_LED_EMV_Init(void);
void ShowLed();
#endif // !__BSP_BEEP_LED_EMV_H__ #endif // !__BSP_BEEP_LED_EMV_H__

View File

@ -6,14 +6,14 @@
#include <stdint.h> #include <stdint.h>
#include <stdbool.h> #include <stdbool.h>
#define KEY_TIMOUT_MS 1000 #define KEY_TIMOUT_MS 3000
#define KEY_LONG_PRESS_MS 5000 #define KEY_LONG_PRESS_MS 5000
#define KEY_SACN_MS 40 #define KEY_SACN_MS 40
#define KEY_SCAN_EVT (0x0001 << 0) #define KEY_SCAN_EVT (0x0001 << 0)
#define KEY_WAKEUP_EVT (0x0001 << 1) #define KEY_WAKEUP_EVT (0x0001 << 1)
#define KEY_RELEASE_EVT (0x0001 << 2) #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 // KEY_B_PIN at PB7,low->active
#define KEY_B_PIN GPIO_Pin_7 #define KEY_B_PIN GPIO_Pin_7

View File

@ -2,7 +2,7 @@
* @Author : stark1898y 1658608470@qq.com * @Author : stark1898y 1658608470@qq.com
* @Date : 2024-12-12 15:55:38 * @Date : 2024-12-12 15:55:38
* @LastEditors : stark1898y 1658608470@qq.com * @LastEditors : stark1898y 1658608470@qq.com
* @LastEditTime : 2024-12-16 21:00:37 * @LastEditTime : 2024-12-17 14:14:36
* @FilePath : \BLE_TYQ_CH592F\BSP\inc\bsp_valve.h * @FilePath : \BLE_TYQ_CH592F\BSP\inc\bsp_valve.h
* @Description : * @Description :
* *
@ -23,9 +23,24 @@ extern tmosTaskID vavle_task_id;
#define VAVLE_CLOSE_ACTION_EVT (0x0001 << 3) // 关阀,动作 #define VAVLE_CLOSE_ACTION_EVT (0x0001 << 3) // 关阀,动作
#define VAVLE_CLOSE_END_EVT (0x0001 << 4) // 关阀结束 #define VAVLE_CLOSE_END_EVT (0x0001 << 4) // 关阀结束
#define VAVLE_LOW_VBAT_ALARM_EVT (0x0001 << 5) // 低电压提醒
#define VAVLE_DECT_EVT (0x0001 << 6) // 循环检测
#define VALVE_LOW_VBAT_ALARM_PERIOD_MS (1600 * 60 * 10)
#define VALVE_DECT_PERIOD_MS (1600 * 60 * 10)
#define CHARGE_TIME_MS 1000 #define CHARGE_TIME_MS 1000
// 2.2V
#define LOW_VABAT_ALARM_VALUE 22
#define LOW_VABAT_CLOSE_VALUE 20
#define FRAME_HEADER 0xAA #define FRAME_HEADER 0xAA
#define FRAME_TAIL 0x55 #define FRAME_TAIL 0x55

View File

@ -1,80 +1,118 @@
#include "bsp_beep_led_emv.h" #include "bsp_beep_led_emv.h"
#if 0 #include "bsp_uart.h"
void BSP_BOOST_Init(void) #include "log.h"
#include "bsp_beep_led_emv.h"
#include "bsp_valve.h"
#include "SLEEP.h"
#include "bsp_adc.h"
#undef LOG_ENABLE
#define LOG_ENABLE 1
#undef LOG_TAG
#define LOG_TAG "led"
tmosTaskID led_task_id = INVALID_TASK_ID;
void ShowLed()
{ {
gValveData.bat = BSP_ReadVbat();
// 电压过低就关阀
if (gValveData.bat <= LOW_VABAT_ALARM_VALUE)
{
LED_ALL_OFF_DEINIT;
LED_Y_ON;
BEEP_ON;
logDebug("LED_Y_ON");
}
else if (gValveData.switch_status == kUnknown || gValveData.switch_status == kClosed)
{
LED_ALL_OFF_DEINIT;
LED_R_ON;
logDebug("LED_R_ON");
}
else if (gValveData.switch_status == kOpened)
{
LED_ALL_OFF_DEINIT;
LED_G_ON;
logDebug("LED_G_ON");
}
}
static tmosEvents LED_Task_ProcessEvent(tmosTaskID taskID, tmosEvents event)
{
//event 处理
if(event & LED_SHOW_START_EVT)
{
logDebug("LED_SHOW_START_EVT");
BSP_BlockSleep();
BSP_RequestBoost();
DelayMs(1);
ShowLed();
tmos_stop_task(led_task_id, LED_SHOW_ONCE_EVT);
tmos_start_task(led_task_id, LED_SHOW_ONCE_EVT, 1000);
return (event ^ LED_SHOW_START_EVT);
}
if (event & LED_SHOW_ONCE_EVT)
{
logDebug("LED_SHOW_ONCE_EVT");
LED_ALL_OFF_DEINIT;
BEEP_OFF_DEINIT;
tmos_set_event(led_task_id, LED_SHOW_END_EVT);
return (event ^ LED_SHOW_ONCE_EVT);
}
if(event & LED_SHOW_END_EVT)
{
logDebug("LED_SHOW_END_EVT");
LED_ALL_OFF_DEINIT;
BEEP_OFF_DEINIT;
BSP_NoNeedBoost();
BSP_RequestSleep();
// BEEP_OFF_DEINIT;
// EMV_CHARGE_OFF_DEINIT;
// EMV_OFF_DEINIT;
return (event ^ LED_SHOW_END_EVT);
}
if (event & LOW_VBAT_EVT)
{
logDebug("LOW_VBAT_EVT");
LED_Y_ON;
return (event ^ LOW_VBAT_EVT);
}
} }
void BSP_BOOST_DeInit(void)
void BSP_BEEP_LED_EMV_Init(void)
{ {
// 12V_EN BOOST_OFF_DEINIT;
GPIOB_ResetBits(GPIO_Pin_14); BEEP_OFF_DEINIT;
GPIOB_ModeCfg(GPIO_Pin_14, GPIO_ModeIN_PD); LED_ALL_OFF_DEINIT;
EMV_CHARGE_OFF_DEINIT;
EMV_OFF_DEINIT;
led_task_id = TMOS_ProcessEventRegister(LED_Task_ProcessEvent);
logDebug("BSP_BEEP_LED_EMV_Init");
} }
void BSP_BEEP_Init(void)
{
// BEEP
GPIOA_ResetBits(GPIO_Pin_14);
GPIOA_ModeCfg(GPIO_Pin_14, GPIO_ModeOut_PP_5mA);
}
void BSP_BEEP_DeInit(void)
{
// BEEP
GPIOA_ResetBits(GPIO_Pin_14);
// 有数字晶体管的下拉
GPIOA_ModeCfg(GPIO_Pin_14, GPIO_ModeIN_Floating);
}
void BSP_LED_Init(void)
{
// LED_R
GPIOA_ResetBits(GPIO_Pin_4);
GPIOA_ModeCfg(GPIO_Pin_4, GPIO_ModeOut_PP_5mA);
// LED_G
GPIOA_ResetBits(GPIO_Pin_5);
GPIOA_ModeCfg(GPIO_Pin_5, GPIO_ModeOut_PP_5mA);
// LED_Y
GPIOA_ResetBits(GPIO_Pin_15);
GPIOA_ModeCfg(GPIO_Pin_15, GPIO_ModeOut_PP_5mA);
}
void BEP_LED_DeInit(void)
{
// LED
GPIOA_ResetBits(GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_15);
// 有数字晶体管的下拉
GPIOA_ModeCfg(GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_15, GPIO_ModeIN_Floating);
}
void BSP_EMV_Init(void)
{
// EMV_CHARGE
GPIOB_ResetBits(GPIO_Pin_13);
GPIOB_ModeCfg(GPIO_Pin_13, GPIO_ModeOut_PP_5mA);
// EMV_EN
GPIOB_ResetBits(GPIO_Pin_12);
GPIOB_ModeCfg(GPIO_Pin_12, GPIO_ModeOut_PP_5mA);
}
void BSP_EMV_DeInit(void)
{
// EMV_CHARGE
GPIOB_ResetBits(GPIO_Pin_13);
// 有数字晶体管的下拉
GPIOB_ModeCfg(GPIO_Pin_13, GPIO_ModeIN_Floating);
// EMV_EN
GPIOB_ResetBits(GPIO_Pin_12);
// 有外部下拉电阻
GPIOB_ModeCfg(GPIO_Pin_12, GPIO_ModeIN_Floating);
}
#endif

View File

@ -70,11 +70,10 @@ static uint16_t KEY_Task_ProcessEvent(uint8_t task_id, uint16_t events)
{ {
key_vaild_times++; key_vaild_times++;
} }
key_timeout_cnt = 10; key_timeout_cnt = KEY_TIMOUT_MS / KEY_SACN_MS;
} }
else else
{ // button release { // button release
if (key_vaild_times) if (key_vaild_times)
{ {
if ((key_vaild_times) < (KEY_LONG_PRESS_MS / KEY_SACN_MS)) if ((key_vaild_times) < (KEY_LONG_PRESS_MS / KEY_SACN_MS))
@ -90,7 +89,7 @@ static uint16_t KEY_Task_ProcessEvent(uint8_t task_id, uint16_t events)
if (key_timeout_cnt) if (key_timeout_cnt)
{ {
key_timeout_cnt--; key_timeout_cnt--;
logDebug("key_timeout_cnt %d", key_timeout_cnt); // logDebug("key_timeout_cnt %d", key_timeout_cnt);
tmos_start_task(key_task_id, KEY_SCAN_EVT, MS1_TO_SYSTEM_TIME(KEY_SACN_MS)); // 40ms tmos_start_task(key_task_id, KEY_SCAN_EVT, MS1_TO_SYSTEM_TIME(KEY_SACN_MS)); // 40ms
} }
else else
@ -109,19 +108,6 @@ static uint16_t KEY_Task_ProcessEvent(uint8_t task_id, uint16_t events)
// 由按键中断唤醒后开启按键扫描 // 由按键中断唤醒后开启按键扫描
void BSP_KEY_EnterLowpower(void) void BSP_KEY_EnterLowpower(void)
{ {
// key_wakeup_flag = 0;
// tmos_stop_task(key_task_id, KEY_SCAN_EVT);
// R16_PB_INT_MODE |= KEY_B_PIN; // edge mode
// GPIOB_ResetBits(KEY_B_PIN); // edge fall
// R16_PB_INT_IF = KEY_B_PIN;
// R16_PB_INT_EN |= KEY_B_PIN;
// 由外部上拉电阻了
// 设置为浮空输入模式
// GPIOB_SetBits(KEY_B_PIN);
// GPIOB_ModeCfg(KEY_B_PIN, GPIO_ModeIN_PU);
// TODO:按键电平触发设置 // TODO:按键电平触发设置
// 下降沿触发 // 下降沿触发
GPIOB_ITModeCfg(KEY_B_PIN, GPIO_ITMode_FallEdge); GPIOB_ITModeCfg(KEY_B_PIN, GPIO_ITMode_FallEdge);
@ -253,7 +239,7 @@ void BSP_KEY_Init(app_task_evt_handler_t handler)
// 由外部上拉电阻了 // 由外部上拉电阻了
// 设置为浮空输入模式 // 设置为浮空输入模式
// GPIOB_SetBits(KEY_B_PIN); // GPIOB_SetBits(KEY_B_PIN);
GPIOB_ModeCfg(KEY_B_PIN, GPIO_ModeIN_PU); GPIOB_ModeCfg(KEY_B_PIN, GPIO_ModeIN_Floating);
// 下降沿触发 // 下降沿触发
GPIOB_ITModeCfg(KEY_B_PIN, GPIO_ITMode_FallEdge); GPIOB_ITModeCfg(KEY_B_PIN, GPIO_ITMode_FallEdge);
@ -266,42 +252,18 @@ void BSP_KEY_Init(app_task_evt_handler_t handler)
PFIC_EnableIRQ(GPIO_B_IRQn); PFIC_EnableIRQ(GPIO_B_IRQn);
tmos_start_task(key_task_id, KEY_SCAN_EVT, MS1_TO_SYSTEM_TIME(KEY_SACN_MS)); tmos_start_task(key_task_id, KEY_SCAN_EVT, MS1_TO_SYSTEM_TIME(KEY_SACN_MS));
// tmos_start_task(key_task_id, KEY_SCAN_EVT, MS1_TO_SYSTEM_TIME(5));
//开始一个定时事件,不断的执行,除非运行tmos_stop_task关掉,
//tmosTimer具体是 1600 = 1s
// BSP_KEY_EnterLowpower();
} }
__HIGH_CODE __HIGH_CODE
__attribute__((noinline)) __attribute__((noinline))
void KEY_ProcessLoop(void) void KEY_ProcessLoop(void)
{ {
// {
// 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");
// }
// }
if (key_wakeup_flag) if (key_wakeup_flag)
{ {
key_wakeup_flag = 0; key_wakeup_flag = 0;
tmos_set_event(key_task_id, KEY_SCAN_EVT); tmos_set_event(key_task_id, KEY_SCAN_EVT);
logDebug("KEY_ProcessLoop"); 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");
// }
} }
@ -318,16 +280,8 @@ void GPIOB_IRQHandler(void)
GPIOB_ClearITFlagBit(KEY_B_PIN); GPIOB_ClearITFlagBit(KEY_B_PIN);
// tmos_set_event(key_task_id, KEY_SCAN_EVT);
// logDebug("KEY_ProcessLoop");
key_wakeup_flag = 1; key_wakeup_flag = 1;
// key_timeout_flag = 0;
// BSP_BlockSleep();
// if (R16_PB_INT_IF & KEY_B_PIN)
// {
// R16_PB_INT_IF = KEY_B_PIN;
// // tmos_set_event(key_task_id, KEY_SCAN_EVT);
// BSP_KEY_ExitLowpower();
// }
// tmos_set_event(key_task_id,KEY_SCAN_EVT);
} }

View File

@ -2,7 +2,7 @@
* @Author : stark1898y 1658608470@qq.com * @Author : stark1898y 1658608470@qq.com
* @Date : 2024-12-15 15:01:15 * @Date : 2024-12-15 15:01:15
* @LastEditors : stark1898y 1658608470@qq.com * @LastEditors : stark1898y 1658608470@qq.com
* @LastEditTime : 2024-12-16 21:11:32 * @LastEditTime : 2024-12-17 14:36:52
* @FilePath : \BLE_TYQ_CH592F\BSP\src\bsp_valve.c * @FilePath : \BLE_TYQ_CH592F\BSP\src\bsp_valve.c
* @Description : * @Description :
* *
@ -19,6 +19,10 @@
#include "peripheral.h" #include "peripheral.h"
#include "SLEEP.h"
#include "bsp_adc.h"
#undef LOG_ENABLE #undef LOG_ENABLE
#define LOG_ENABLE 1 #define LOG_ENABLE 1
@ -336,7 +340,7 @@ static uint16_t VAVLE_Task_ProcessEvent(uint8_t task_id, uint16_t events)
{ {
logDebug("VAVLE_CLOSE_START_EVT"); logDebug("VAVLE_CLOSE_START_EVT");
BOOST_EN; BSP_RequestBoost();
DelayMs(1); DelayMs(1);
// EMV_CHARGE // EMV_CHARGE
@ -352,6 +356,7 @@ static uint16_t VAVLE_Task_ProcessEvent(uint8_t task_id, uint16_t events)
if (events & VAVLE_CLOSE_ACTION_EVT) if (events & VAVLE_CLOSE_ACTION_EVT)
{ {
logDebug("VAVLE_CLOSE_ACTION_EVT"); logDebug("VAVLE_CLOSE_ACTION_EVT");
BEEP_ON;
// 关阀动作 // 关阀动作
EMV_CHARGE_OFF_DEINIT; EMV_CHARGE_OFF_DEINIT;
logDebug("EMV_CHARGE_OFF_DEINIT"); logDebug("EMV_CHARGE_OFF_DEINIT");
@ -365,18 +370,53 @@ static uint16_t VAVLE_Task_ProcessEvent(uint8_t task_id, uint16_t events)
} }
if (events & VAVLE_CLOSE_END_EVT) if (events & VAVLE_CLOSE_END_EVT)
{ {
BEEP_OFF_DEINIT;
EMV_CHARGE_OFF_DEINIT;
EMV_OFF_DEINIT;
BSP_NoNeedBoost();
gValveData.switch_status = kClosed; gValveData.switch_status = kClosed;
tmos_memset(&RelyData, 0, sizeof(RelyData)); tmos_memset(&RelyData, 0, sizeof(RelyData));
BSP_VALVE_Generate_ValveResponse(&RelyData, kCmdCloseVavle, 1); BSP_VALVE_Generate_ValveResponse(&RelyData, kCmdCloseVavle, 1);
tmos_set_event(Peripheral_TaskID, SBP_REPLY_CMD_EVT); tmos_set_event(Peripheral_TaskID, SBP_REPLY_CMD_EVT);
logDebug("VAVLE_CLOSE_END_EVT"); logDebug("VAVLE_CLOSE_END_EVT");
return (events ^ VAVLE_CLOSE_END_EVT); return (events ^ VAVLE_CLOSE_END_EVT);
} }
if (events & VAVLE_LOW_VBAT_ALARM_EVT)
{
logDebug("VAVLE_LOW_VBAT_ALARM_EVT");
tmos_set_event(vavle_task_id, VAVLE_CLOSE_START_EVT);
// tmos_start_task(vavle_task_id, VAVLE_LOW_VBAT_ALARM_EVT, MS1_TO_SYSTEM_TIME(VALVE_LOW_VBAT_ALARM_PERIOD_MS));
return (events ^ VAVLE_LOW_VBAT_ALARM_EVT);
}
if (events & VAVLE_DECT_EVT)
{
logDebug("VAVLE_DECT_EVT");
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)
{
tmos_set_event(vavle_task_id, VAVLE_LOW_VBAT_ALARM_EVT);
}
tmos_start_task(vavle_task_id, VAVLE_DECT_EVT, MS1_TO_SYSTEM_TIME(VALVE_DECT_PERIOD_MS));
return (events ^ VAVLE_DECT_EVT);
}
// Discard unknown events // Discard unknown events
return 0; return 0;
@ -395,10 +435,12 @@ void BSP_VAVLE_Init(void)
gValveData.atm_pressure = 0; gValveData.atm_pressure = 0;
gValveData.type = kTyq; gValveData.type = kTyq;
gValveData.bat = 0; gValveData.bat = BSP_ReadVbat();
// //立即开始一个event // //立即开始一个event
// tmos_set_event(vavle_task_id, VAVLE_RX_DATA_EVT); // tmos_set_event(vavle_task_id, VAVLE_RX_DATA_EVT);
tmos_start_task(vavle_task_id, VAVLE_DECT_EVT, MS1_TO_SYSTEM_TIME(VALVE_DECT_PERIOD_MS));
logInfo("BSP_Valve_Init"); logInfo("BSP_Valve_Init");
} }

View File

@ -14,6 +14,8 @@
/* Í·Îļþ°üº¬ */ /* Í·Îļþ°üº¬ */
#include "HAL.h" #include "HAL.h"
#include "bsp_beep_led_emv.h"
/* LED control structure */ /* LED control structure */
typedef struct typedef struct
{ {
@ -58,10 +60,16 @@ void HalLedOnOff(uint8_t leds, uint8_t mode);
void HAL_LedInit(void) void HAL_LedInit(void)
{ {
/* Initialize all LEDs to OFF */ /* Initialize all LEDs to OFF */
LED1_DDR; LEDR_DDR;
LEDG_DDR;
LEDY_DDR;
BEEP_DDR;
HalLedSet(HAL_LED_ALL, HAL_LED_MODE_OFF); HalLedSet(HAL_LED_ALL, HAL_LED_MODE_OFF);
BOOST_EN;
// just test // just test
HalLedBlink(HAL_LED_1, 10, 30, 4000); HalLedBlink(HAL_LED_R, 10, 50, 200);
/* Initialize sleepActive to FALSE */ /* Initialize sleepActive to FALSE */
HalLedStatusControl.sleepActive = FALSE; HalLedStatusControl.sleepActive = FALSE;
} }
@ -101,7 +109,7 @@ uint8_t HalLedSet(uint8_t leds, uint8_t mode)
case HAL_LED_MODE_OFF: case HAL_LED_MODE_OFF:
case HAL_LED_MODE_TOGGLE: case HAL_LED_MODE_TOGGLE:
{ {
led = HAL_LED_1; led = HAL_LED_R;
leds &= HAL_LED_ALL; leds &= HAL_LED_ALL;
sts = HalLedStatusControl.HalLedControlTable; sts = HalLedStatusControl.HalLedControlTable;
while(leds) while(leds)
@ -152,7 +160,7 @@ void HalLedBlink(uint8_t leds, uint8_t numBlinks, uint8_t percent, uint16_t peri
{ {
if(percent < 100) if(percent < 100)
{ {
led = HAL_LED_1; led = HAL_LED_R;
leds &= HAL_LED_ALL; leds &= HAL_LED_ALL;
sts = HalLedStatusControl.HalLedControlTable; sts = HalLedStatusControl.HalLedControlTable;
while(leds) while(leds)
@ -204,7 +212,7 @@ void HalLedUpdate(void)
HalLedControl_t *sts; HalLedControl_t *sts;
next = 0; next = 0;
led = HAL_LED_1; led = HAL_LED_R;
leds = HAL_LED_ALL; leds = HAL_LED_ALL;
sts = HalLedStatusControl.HalLedControlTable; sts = HalLedStatusControl.HalLedControlTable;
@ -291,48 +299,48 @@ void HalLedUpdate(void)
*/ */
void HalLedOnOff(uint8_t leds, uint8_t mode) void HalLedOnOff(uint8_t leds, uint8_t mode)
{ {
if(leds & HAL_LED_1) if(leds & HAL_LED_R)
{ {
if(mode == HAL_LED_MODE_ON) if(mode == HAL_LED_MODE_ON)
{ {
HAL_TURN_ON_LED1(); HAL_TURN_ON_LEDR();
} }
else else
{ {
HAL_TURN_OFF_LED1(); HAL_TURN_OFF_LEDR();
} }
} }
if(leds & HAL_LED_2) if(leds & HAL_LED_G)
{ {
if(mode == HAL_LED_MODE_ON) if(mode == HAL_LED_MODE_ON)
{ {
HAL_TURN_ON_LED2(); HAL_TURN_ON_LEDG();
} }
else else
{ {
HAL_TURN_OFF_LED2(); HAL_TURN_OFF_LEDG();
} }
} }
if(leds & HAL_LED_3) if(leds & HAL_LED_Y)
{ {
if(mode == HAL_LED_MODE_ON) if(mode == HAL_LED_MODE_ON)
{ {
HAL_TURN_ON_LED3(); HAL_TURN_ON_LEDY();
} }
else else
{ {
HAL_TURN_OFF_LED3(); HAL_TURN_OFF_LEDY();
} }
} }
if(leds & HAL_LED_4) if(leds & HAL_LED_BEEP)
{ {
if(mode == HAL_LED_MODE_ON) if(mode == HAL_LED_MODE_ON)
{ {
HAL_TURN_ON_LED4(); HAL_TURN_ON_BEEP();
} }
else else
{ {
HAL_TURN_OFF_LED4(); HAL_TURN_OFF_BEEP();
} }
} }
/* Remember current state */ /* Remember current state */

View File

@ -19,6 +19,8 @@
#include "log.h" #include "log.h"
#include "bsp_uart.h" #include "bsp_uart.h"
#include "bsp_beep_led_emv.h"
#undef LOG_ENABLE #undef LOG_ENABLE
#define LOG_ENABLE 1 #define LOG_ENABLE 1
@ -27,6 +29,7 @@
#define LOG_TAG "sleep" #define LOG_TAG "sleep"
static volatile bool block_sleep_flag = false; static volatile bool block_sleep_flag = false;
static volatile bool block_boost_flag = false;
void BSP_RequestSleep(void) void BSP_RequestSleep(void)
{ {
@ -38,6 +41,18 @@ void BSP_BlockSleep(void)
block_sleep_flag = true; block_sleep_flag = true;
} }
void BSP_RequestBoost(void)
{
BOOST_EN;
block_boost_flag = false;
}
void BSP_NoNeedBoost(void)
{
block_boost_flag = true;
}
/******************************************************************************* /*******************************************************************************
* @fn CH59x_LowPower * @fn CH59x_LowPower
@ -50,6 +65,14 @@ void BSP_BlockSleep(void)
*/ */
uint32_t CH59x_LowPower(uint32_t time) uint32_t CH59x_LowPower(uint32_t time)
{ {
if (block_boost_flag == false)
{
BOOST_EN;
}
else
{
BOOST_OFF_DEINIT;
}
if( true == block_sleep_flag) if( true == block_sleep_flag)
{ {
// logDebug("block_sleep"); // logDebug("block_sleep");

View File

@ -23,11 +23,12 @@ extern "C" {
*/ */
/* LEDS - The LED number is the same as the bit position */ /* LEDS - The LED number is the same as the bit position */
#define HAL_LED_1 0x01 #define HAL_LED_R 0x01
#define HAL_LED_2 0x02 #define HAL_LED_G 0x02
#define HAL_LED_3 0x04 #define HAL_LED_Y 0x04
#define HAL_LED_4 0x08 // BEEP
#define HAL_LED_ALL (HAL_LED_1 | HAL_LED_2 | HAL_LED_3 | HAL_LED_4) #define HAL_LED_BEEP 0x08
#define HAL_LED_ALL (HAL_LED_R | HAL_LED_G | HAL_LED_Y | HAL_LED_BEEP)
/* Modes */ /* Modes */
#define HAL_LED_MODE_OFF 0x00 #define HAL_LED_MODE_OFF 0x00
@ -49,33 +50,42 @@ extern "C" {
/* 连接一个LED用于监控演示程序的进度,低电平LED亮 */ /* 连接一个LED用于监控演示程序的进度,低电平LED亮 */
/* 1 - LED */ /* 1 - LED */
#define LED1_BV BV(15) #define LEDR_BV BV(4) // PA4
#define LED2_BV #define LEDG_BV BV(5) // PA5
#define LED3_BV #define LEDY_BV BV(15) // PA15
#define LED1_OUT (R32_PB_OUT) #define BEEP_BV BV(14) // PA14
#define LED2_OUT 0
#define LED3_OUT 0
#define LED4_OUT 0
#define LED1_DDR (R32_PB_DIR |= LED1_BV) #define LEDR_OUT (R32_PA_OUT)
#define LED2_DDR 0 #define LEDG_OUT (R32_PA_OUT)
#define LED3_DDR 0 #define LEDY_OUT (R32_PA_OUT)
#define HAL_TURN_OFF_LED1() (LED1_OUT |= LED1_BV) #define BEEP_OUT (R32_PA_OUT)
#define HAL_TURN_OFF_LED2()
#define HAL_TURN_OFF_LED3()
#define HAL_TURN_OFF_LED4()
#define HAL_TURN_ON_LED1() (LED1_OUT &= (~LED1_BV)) #define LEDR_DDR (R32_PA_DIR |= LEDR_BV)
#define HAL_TURN_ON_LED2() #define LEDG_DDR (R32_PA_DIR |= LEDG_BV)
#define HAL_TURN_ON_LED3() #define LEDY_DDR (R32_PA_DIR |= LEDY_BV)
#define HAL_TURN_ON_LED4()
#define HAL_STATE_LED1() 0 #define BEEP_DDR (R32_PA_DIR |= BEEP_BV)
#define HAL_STATE_LED2() 0
#define HAL_STATE_LED3() 0
#define HAL_STATE_LED4() 0 #define HAL_TURN_OFF_LEDR() (LEDR_OUT &= (~LEDR_BV))
#define HAL_TURN_OFF_LEDG() (LEDG_OUT &= (~LEDG_BV))
#define HAL_TURN_OFF_LEDY() (LEDY_OUT &= (~LEDY_BV))
#define HAL_TURN_OFF_BEEP() (BEEP_OUT |= BEEP_BV)
#define HAL_TURN_ON_LEDR() (LEDR_OUT |= LEDR_BV)
#define HAL_TURN_ON_LEDG() (LEDG_OUT |= LEDG_BV)
#define HAL_TURN_ON_LEDY() (LEDY_OUT |= LEDY_BV)
#define HAL_TURN_ON_BEEP() (BEEP_OUT |= BEEP_BV)
#define HAL_STATE_LEDR() GPIOA_ReadPortPin(LEDR_BV)
#define HAL_STATE_LEDG() GPIOA_ReadPortPin(LEDG_BV)
#define HAL_STATE_LEDY() GPIOA_ReadPortPin(LEDY_BV)
#define HAL_STATE_BEEP() GPIOA_ReadPortPin(BEEP_BV)
/********************************************************************* /*********************************************************************
* GLOBAL VARIABLES * GLOBAL VARIABLES

View File

@ -25,6 +25,8 @@ extern "C" {
void BSP_RequestSleep(void); void BSP_RequestSleep(void);
void BSP_BlockSleep(void); void BSP_BlockSleep(void);
void BSP_RequestBoost(void);
void BSP_NoNeedBoost(void);
/********************************************************************* /*********************************************************************
* FUNCTIONS * FUNCTIONS