暂存,装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//BSP/inc/bsp_valve.h=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_key.c=UTF-8
encoding//BSP/src/bsp_valve.c=UTF-8

View File

@ -17,6 +17,7 @@
"stdarg.h": "c",
"bsp_flash.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_adc.h"
#include "bsp_beep_led_emv.h"
#include "SLEEP.h"
#undef LOG_ENABLE
#define LOG_ENABLE 1
@ -48,7 +52,7 @@ void BSP_NoNeeedReplyCMd(void)
}
// 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
#define SBP_READ_RSSI_EVT_PERIOD (1600 * 3) // (160 = 100ms)
@ -721,6 +725,29 @@ static void performPeriodicTask(void)
{
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;
if (BSP_ReadTempHumi(&_humi, &_temp) == 0)
{

View File

@ -41,27 +41,58 @@
__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)
{
BSP_BlockSleep();
switch(app_evt_type)
{
case kKeyShort:
logDebug("button short press");
key_cnt++;
if (key_cnt == 1)
key_press_cnt++;
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)
{
logDebug("kClosed-->kOpened");
// tmos_set_event(led_task_id, LED_SHOW_START_EVT);
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;
@ -73,8 +104,16 @@ void app_task_handler(TeAppEvtType app_evt_type)
case kKeyRelease:
// BSP_KEY_EnterLowpower();
// 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();
logDebug("gpio relase;BSP_RequestSleep");
break;
@ -193,33 +232,19 @@ int main(void)
#endif
SetSysClock(CLK_SOURCE_PLL_60MHz);
#if (defined(HAL_SLEEP)) && (HAL_SLEEP == TRUE)
GPIOA_ModeCfg(GPIO_Pin_All, GPIO_ModeIN_PD);
GPIOB_ModeCfg(GPIO_Pin_All, GPIO_ModeIN_PD);
#endif
#ifdef DEBUG
// GPIOA_SetBits(bTXD1);
// GPIOA_ModeCfg(bTXD1, GPIO_ModeOut_PP_5mA);
// UART1_DefInit();
// 改成1500000波特率了
BSP_UART1_Init(1500000);
logDebug("Start @ChipID=%02X\n", R8_CHIP_ID);
logError("中文测试 %2.2f", 123.456);
#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();
logDebug("%s\n", VER_LIB);
@ -234,25 +259,51 @@ int main(void)
// {
// DelayMs(1000);
// }
HAL_Init();
GAPRole_PeripheralInit();
Peripheral_Init();
// 在连接间隔和广播间隔到来时,会进入回调中喂狗
// LL_AdvertiseEventRegister(BLE_AdvertiseEventCB);
// LL_ConnectEventRegister(BLE_ConnectEventCB);
BSP_FLASH_Init();
DelayMs(100);
GXHTC3C_Init();
BSP_KEY_Init(app_task_handler);
// IWDG_Init(1500);
DelayMs(1000 * 3);
BSP_ADC_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();
}

View File

@ -2,8 +2,8 @@
* @Author : stark1898y 1658608470@qq.com
* @Date : 2024-12-09 09:50:56
* @LastEditors : stark1898y 1658608470@qq.com
* @LastEditTime : 2024-12-15 15:37:31
* @FilePath : \BLE_TYQ_CH592F - \BSP\inc\bsp_beep_led_emv.h
* @LastEditTime : 2024-12-17 10:49:46
* @FilePath : \BLE_TYQ_CH592F\BSP\inc\bsp_beep_led_emv.h
* @Description :
*
* Copyright (c) 2024 by yzy, All Rights Reserved.
@ -14,6 +14,17 @@
#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************************ */
#define BOOST_EN \
@ -106,5 +117,8 @@
GPIOB_ModeCfg(GPIO_Pin_12, GPIO_ModeIN_Floating); \
} while (0);
void BSP_BEEP_LED_EMV_Init(void);
void ShowLed();
#endif // !__BSP_BEEP_LED_EMV_H__

View File

@ -6,14 +6,14 @@
#include <stdint.h>
#include <stdbool.h>
#define KEY_TIMOUT_MS 1000
#define KEY_TIMOUT_MS 3000
#define KEY_LONG_PRESS_MS 5000
#define KEY_SACN_MS 40
#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_B_PIN GPIO_Pin_7

View File

@ -2,7 +2,7 @@
* @Author : stark1898y 1658608470@qq.com
* @Date : 2024-12-12 15:55:38
* @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
* @Description :
*
@ -23,9 +23,24 @@ extern tmosTaskID vavle_task_id;
#define VAVLE_CLOSE_ACTION_EVT (0x0001 << 3) // 关阀,动作
#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
// 2.2V
#define LOW_VABAT_ALARM_VALUE 22
#define LOW_VABAT_CLOSE_VALUE 20
#define FRAME_HEADER 0xAA
#define FRAME_TAIL 0x55

View File

@ -1,80 +1,118 @@
#include "bsp_beep_led_emv.h"
#if 0
void BSP_BOOST_Init(void)
#include "bsp_uart.h"
#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
GPIOB_ResetBits(GPIO_Pin_14);
GPIOB_ModeCfg(GPIO_Pin_14, GPIO_ModeIN_PD);
BOOST_OFF_DEINIT;
BEEP_OFF_DEINIT;
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_timeout_cnt = 10;
key_timeout_cnt = KEY_TIMOUT_MS / KEY_SACN_MS;
}
else
{ // button release
if (key_vaild_times)
{
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)
{
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
}
else
@ -109,19 +108,6 @@ static uint16_t KEY_Task_ProcessEvent(uint8_t task_id, uint16_t events)
// 由按键中断唤醒后开启按键扫描
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:按键电平触发设置
// 下降沿触发
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_ModeCfg(KEY_B_PIN, GPIO_ModeIN_PU);
GPIOB_ModeCfg(KEY_B_PIN, GPIO_ModeIN_Floating);
// 下降沿触发
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);
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
__attribute__((noinline))
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)
{
key_wakeup_flag = 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");
// }
}
@ -318,16 +280,8 @@ void GPIOB_IRQHandler(void)
GPIOB_ClearITFlagBit(KEY_B_PIN);
// tmos_set_event(key_task_id, KEY_SCAN_EVT);
// logDebug("KEY_ProcessLoop");
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
* @Date : 2024-12-15 15:01:15
* @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
* @Description :
*
@ -19,6 +19,10 @@
#include "peripheral.h"
#include "SLEEP.h"
#include "bsp_adc.h"
#undef LOG_ENABLE
#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");
BOOST_EN;
BSP_RequestBoost();
DelayMs(1);
// 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)
{
logDebug("VAVLE_CLOSE_ACTION_EVT");
BEEP_ON;
// 关阀动作
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)
{
BEEP_OFF_DEINIT;
EMV_CHARGE_OFF_DEINIT;
EMV_OFF_DEINIT;
BSP_NoNeedBoost();
gValveData.switch_status = kClosed;
tmos_memset(&RelyData, 0, sizeof(RelyData));
BSP_VALVE_Generate_ValveResponse(&RelyData, kCmdCloseVavle, 1);
tmos_set_event(Peripheral_TaskID, SBP_REPLY_CMD_EVT);
logDebug("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
return 0;
@ -395,10 +435,12 @@ void BSP_VAVLE_Init(void)
gValveData.atm_pressure = 0;
gValveData.type = kTyq;
gValveData.bat = 0;
gValveData.bat = BSP_ReadVbat();
// //立即开始一个event
// 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");
}

View File

@ -6,7 +6,7 @@
* Description :
*********************************************************************************
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
* Attention: This software (modified or not) and binary are used for
* Attention: This software (modified or not) and binary are used for
* microcontroller manufactured by Nanjing Qinheng Microelectronics.
*******************************************************************************/
@ -14,6 +14,8 @@
/* Í·Îļþ°üº¬ */
#include "HAL.h"
#include "bsp_beep_led_emv.h"
/* LED control structure */
typedef struct
{
@ -58,10 +60,16 @@ void HalLedOnOff(uint8_t leds, uint8_t mode);
void HAL_LedInit(void)
{
/* Initialize all LEDs to OFF */
LED1_DDR;
LEDR_DDR;
LEDG_DDR;
LEDY_DDR;
BEEP_DDR;
HalLedSet(HAL_LED_ALL, HAL_LED_MODE_OFF);
BOOST_EN;
// just test
HalLedBlink(HAL_LED_1, 10, 30, 4000);
HalLedBlink(HAL_LED_R, 10, 50, 200);
/* Initialize sleepActive to 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_TOGGLE:
{
led = HAL_LED_1;
led = HAL_LED_R;
leds &= HAL_LED_ALL;
sts = HalLedStatusControl.HalLedControlTable;
while(leds)
@ -152,7 +160,7 @@ void HalLedBlink(uint8_t leds, uint8_t numBlinks, uint8_t percent, uint16_t peri
{
if(percent < 100)
{
led = HAL_LED_1;
led = HAL_LED_R;
leds &= HAL_LED_ALL;
sts = HalLedStatusControl.HalLedControlTable;
while(leds)
@ -204,7 +212,7 @@ void HalLedUpdate(void)
HalLedControl_t *sts;
next = 0;
led = HAL_LED_1;
led = HAL_LED_R;
leds = HAL_LED_ALL;
sts = HalLedStatusControl.HalLedControlTable;
@ -291,48 +299,48 @@ void HalLedUpdate(void)
*/
void HalLedOnOff(uint8_t leds, uint8_t mode)
{
if(leds & HAL_LED_1)
if(leds & HAL_LED_R)
{
if(mode == HAL_LED_MODE_ON)
{
HAL_TURN_ON_LED1();
HAL_TURN_ON_LEDR();
}
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)
{
HAL_TURN_ON_LED2();
HAL_TURN_ON_LEDG();
}
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)
{
HAL_TURN_ON_LED3();
HAL_TURN_ON_LEDY();
}
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)
{
HAL_TURN_ON_LED4();
HAL_TURN_ON_BEEP();
}
else
{
HAL_TURN_OFF_LED4();
HAL_TURN_OFF_BEEP();
}
}
/* Remember current state */

View File

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

View File

@ -6,7 +6,7 @@
* Description :
*********************************************************************************
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
* Attention: This software (modified or not) and binary are used for
* Attention: This software (modified or not) and binary are used for
* microcontroller manufactured by Nanjing Qinheng Microelectronics.
*******************************************************************************/

View File

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

View File

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