This commit is contained in:
stark1898y 2025-05-21 18:33:13 +08:00
parent 87e0ede049
commit 0a51ba710b
4 changed files with 85 additions and 9 deletions

View File

@ -38,6 +38,7 @@ void app_task_handler(TeAppEvtType app_evt_type)
BSP_BlockSleep(); BSP_BlockSleep();
BSP_RequestBoost(); BSP_RequestBoost();
logDebug("BSP_RequestBoost");
#if 1 #if 1
switch (app_evt_type) switch (app_evt_type)
@ -46,6 +47,10 @@ void app_task_handler(TeAppEvtType app_evt_type)
{ {
logDebug("button short press"); logDebug("button short press");
DelayMs(30);
LDect_Init();
logDebug("LDect_Init");
key_press_cnt++; key_press_cnt++;
logDebug("key_press_cnt = %d", key_press_cnt); logDebug("key_press_cnt = %d", key_press_cnt);
#if 1 #if 1
@ -107,6 +112,8 @@ void app_task_handler(TeAppEvtType app_evt_type)
LED_ALL_OFF_DEINIT; LED_ALL_OFF_DEINIT;
BEEP_OFF_DEINIT; BEEP_OFF_DEINIT;
LDect_Deinit();
BSP_NoNeedBoost(); BSP_NoNeedBoost();
BSP_RequestSleep(); BSP_RequestSleep();

View File

@ -117,6 +117,9 @@ typedef struct __attribute__((packed))
} TsValveData; } TsValveData;
extern TsValveData gValveData; extern TsValveData gValveData;
void LDect_Deinit(void);
void LDect_Init(void);
uint8_t CheckSum(const uint8_t *data, size_t len); uint8_t CheckSum(const uint8_t *data, size_t len);
void VavleDect_Switch(void); void VavleDect_Switch(void);

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 : 2025-05-21 16:23:23 * @LastEditTime : 2025-05-21 17:23:23
* @FilePath : \BLE_TYQ_CH584M\BSP\src\bsp_valve.c * @FilePath : \BLE_TYQ_CH584M\BSP\src\bsp_valve.c
* @Description : * @Description :
* *
@ -583,6 +583,56 @@ static uint16_t VAVLE_Task_ProcessEvent(uint8_t task_id, uint16_t events)
return 0; return 0;
} }
void LDect_Deinit(void)
{
// 休眠时候,这里下拉输入
GPIOA_ModeCfg(GPIO_Pin_2, GPIO_ModeIN_PD);
}
void LDect_IoInit(void)
{
// PA2
/* 定时器3CAP捕捉 */
GPIOA_ResetBits(GPIO_Pin_2);
GPIOA_ModeCfg(GPIO_Pin_2, GPIO_ModeIN_PU);
}
void LDect_Init(void)
{
// 退出休眠需要重新设置
#if 1
// TMR3功能引脚映射选择位
// 1TMR3_/PWM3_/CAP3_映射到PA[2]
R16_PIN_ALTERNATE |= (1 << 3);
logDebug("TMR3_CapInit 0");
TMR3_CapInit(FallEdge_To_FallEdge);
// (1 / 62.4MHz) * 2的26次方 = 0.01602564102564102564102564102564 us * 67108864 约等于 1.0754625641025641025641025641025 S
TMR3_CAPTimeoutCfg(GetSysClock() / 100); // 设置捕捉超时时间 10ms
// TMR3_CAPTimeoutCfg(0x3FFFFFF); // 设置捕捉超时时间
TMR3_DMACfg(ENABLE, (uint16_t)(uint32_t)&cap_buf[0], (uint16_t)(uint32_t)&cap_buf[20], Mode_Single);
TMR3_ITCfg(ENABLE, TMR0_3_IT_DMA_END); // 开启DMA完成中断
PFIC_EnableIRQ(TMR3_IRQn);
LDect_IoInit();
logDebug("TMR3_CapInit");
while(cap_flag == 0);
cap_flag = 0;
for(uint8_t i = 0; i < 20; i++)
{
logDebug("%08ld ", cap_buf[i] & 0x1ffffff); // 26bit, 最高位表示 高电平还是低电平
uint16_t t = ((cap_buf[i] & 0x1ffffff) * 1.0f) / FREQ_SYS * 1000000;
uint16_t f = 1000000 / t;
logDebug("T = %04d us, f = %04d Hz", t, f);
BSP_UART1_TxLoop();
}
#endif
}
void BSP_VAVLE_Init(void) void BSP_VAVLE_Init(void)
{ {
vavle_task_id = TMOS_ProcessEventRegister(VAVLE_Task_ProcessEvent); vavle_task_id = TMOS_ProcessEventRegister(VAVLE_Task_ProcessEvent);
@ -600,7 +650,8 @@ void BSP_VAVLE_Init(void)
tmos_start_task(vavle_task_id, VAVLE_LOOP_DECT_EVT, MS1_TO_SYSTEM_TIME(VALVE_DECT_PERIOD_MS)); tmos_start_task(vavle_task_id, VAVLE_LOOP_DECT_EVT, MS1_TO_SYSTEM_TIME(VALVE_DECT_PERIOD_MS));
LDect_Init();
#if 0
// PA2 // PA2
/* 定时器3CAP捕捉 */ /* 定时器3CAP捕捉 */
GPIOA_ResetBits(GPIO_Pin_2); GPIOA_ResetBits(GPIO_Pin_2);
@ -611,13 +662,9 @@ void BSP_VAVLE_Init(void)
R16_PIN_ALTERNATE |= (1 << 3); R16_PIN_ALTERNATE |= (1 << 3);
logDebug("TMR3_CapInit 0"); logDebug("TMR3_CapInit 0");
TMR3_CapInit(FallEdge_To_FallEdge); TMR3_CapInit(FallEdge_To_FallEdge);
// (1 / 62.4MHz) * 2的26次方 = 0.01602564102564102564102564102564 us * 67108864 约等于 1.0754625641025641025641025641025 S // (1 / 62.4MHz) * 2的26次方 = 0.01602564102564102564102564102564 us * 67108864 约等于 1.0754625641025641025641025641025 S
// TMR3_CAPTimeoutCfg(FREQ_SYS ); // 设置捕捉超时时间
#if 0
// TODO:这里进睡眠就出错?
// 在这里偶发重启 RST_FLAG_RPOR
TMR3_CAPTimeoutCfg(GetSysClock() / 100); // 设置捕捉超时时间 10ms TMR3_CAPTimeoutCfg(GetSysClock() / 100); // 设置捕捉超时时间 10ms
// TMR3_CAPTimeoutCfg(0x3FFFFFF); // 设置捕捉超时时间 // TMR3_CAPTimeoutCfg(0x3FFFFFF); // 设置捕捉超时时间
@ -638,6 +685,15 @@ void BSP_VAVLE_Init(void)
} }
#endif #endif
// R8_TMR3_CTRL_MOD = RB_TMR_ALL_CLEAR;
// TMR3_Disable();
// // TMR3_ITCfg(DISABLE, TMR0_3_IT_DMA_END); // 关闭DMA完成中断
// PFIC_DisableIRQ(TMR3_IRQn);
// GPIOA_ResetBits(GPIO_Pin_2);
// TODO:问题出在这里,这里会导致出错
LDect_Deinit();
logInfo("BSP_Valve_Init"); logInfo("BSP_Valve_Init");
} }

View File

@ -45,6 +45,8 @@ void BSP_BlockSleep(void)
__HIGH_CODE __HIGH_CODE
void BSP_RequestBoost(void) void BSP_RequestBoost(void)
{ {
// LDect_Init();
BOOST_EN; BOOST_EN;
block_boost_flag = false; block_boost_flag = false;
} }
@ -53,6 +55,9 @@ __HIGH_CODE
void BSP_NoNeedBoost(void) void BSP_NoNeedBoost(void)
{ {
block_boost_flag = true; block_boost_flag = true;
LDect_Deinit();
BOOST_OFF_DEINIT;
} }
@ -73,17 +78,22 @@ uint32_t CH58x_LowPower(uint32_t time)
// BSP_UART1_TxLowPower(); // BSP_UART1_TxLowPower();
if (block_boost_flag == false) if (block_boost_flag == false)
{ {
BOOST_EN; // LDect_Init();
// BOOST_EN;
} }
else else
{ {
BOOST_OFF_DEINIT; // LDect_Deinit();
// BOOST_OFF_DEINIT;
} }
if (true == block_sleep_flag) if (true == block_sleep_flag)
{ {
// logDebug("block_sleep"); // logDebug("block_sleep");
return 0; return 0;
} }
LDect_Deinit();
#if (defined(HAL_SLEEP)) && (HAL_SLEEP == TRUE) #if (defined(HAL_SLEEP)) && (HAL_SLEEP == TRUE)
volatile uint32_t i; volatile uint32_t i;
uint32_t time_tign, time_sleep, time_curr; uint32_t time_tign, time_sleep, time_curr;