From 1de684d1f742be849ca011b3d26d5b2fedfc0ecb Mon Sep 17 00:00:00 2001 From: stark1898y <1658608470@qq.com> Date: Wed, 21 May 2025 13:54:56 +0800 Subject: [PATCH] =?UTF-8?q?3s=E5=96=82=E7=8B=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- APP/peripheral_main.c | 47 ++++--------------------------------------- BSP/inc/bsp_iwdg.h | 4 ++-- BSP/inc/bsp_valve.h | 4 ++-- BSP/src/bsp_iwdg.c | 8 ++++---- BSP/src/bsp_valve.c | 34 +++++++++++++++++++++++++++++++ Ld/Link.ld | 2 +- 6 files changed, 47 insertions(+), 52 deletions(-) diff --git a/APP/peripheral_main.c b/APP/peripheral_main.c index 6908c5a..7303cc3 100644 --- a/APP/peripheral_main.c +++ b/APP/peripheral_main.c @@ -197,61 +197,22 @@ int main(void) BSP_BlockSleep(); BSP_RequestBoost(); - DelayMs(10); + DelayMs(100); ShowLed(); BEEP_ON; - - DelayMs(500 * 1); - - // BSP_BAT_Init(); - - // tmos_set_event(Peripheral_TaskID, SBP_REPLY_CMD_EVT); -#if 0 - // GPIOA_ModeCfg(GPIO_Pin_2, GPIO_ModeIN_Floating); - - // TMR3功能引脚映射选择位: - // 1:TMR3_/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(FREQ_SYS ); // 设置捕捉超时时间 - TMR3_CAPTimeoutCfg(GetSysClock() / 100); // 设置捕捉超时时间 10ms - - // TMR3_CAPTimeoutCfg(0x3FFFFFF); // 设置捕捉超时时间 - TMR3_DMACfg(ENABLE, (uint16_t)(uint32_t)&CapBuf[0], (uint16_t)(uint32_t)&CapBuf[20], Mode_Single); - TMR3_ITCfg(ENABLE, TMR0_3_IT_DMA_END); // 开启DMA完成中断 - PFIC_EnableIRQ(TMR3_IRQn); - - logDebug("TMR3_CapInit"); - while(capFlag == 0); - capFlag = 0; - for(uint8_t i = 0; i < 20; i++) - { - logDebug("%08ld ", CapBuf[i] & 0x1ffffff); // 26bit, 最高位表示 高电平还是低电平 - uint16_t t = ((CapBuf[i] & 0x1ffffff) * 1.0f) / FREQ_SYS * 1000000; - uint16_t f = 1000000 / t; - logDebug("T = %04d us, f = %04d Hz", t, f); - BSP_UART1_TxLoop(); - } - - // DelayMs(1000 * 30); - -#endif + DelayMs(500); LED_ALL_OFF_DEINIT; BEEP_OFF_DEINIT; - BSP_NoNeedBoost(); BSP_RequestSleep(); IWDG_Init(IWDG_TIMEOUT_MS); - logDebug("123"); + logDebug("BSP_Get_Tick1 %d", BSP_Get_Tick()); DelayMs(1000); - logDebug("456"); + logDebug("BSP_Get_Tick2 %d", BSP_Get_Tick()); // 在连接间隔和广播间隔到来时,会进入回调中喂狗 // LL_AdvertiseEventRegister(BLE_AdvertiseEventCB); diff --git a/BSP/inc/bsp_iwdg.h b/BSP/inc/bsp_iwdg.h index 05658e8..e8db855 100644 --- a/BSP/inc/bsp_iwdg.h +++ b/BSP/inc/bsp_iwdg.h @@ -2,7 +2,7 @@ * @Author : stark1898y 1658608470@qq.com * @Date : 2024-12-15 16:13:37 * @LastEditors : stark1898y 1658608470@qq.com - * @LastEditTime : 2025-05-16 17:31:12 + * @LastEditTime : 2025-05-21 13:36:03 * @FilePath : \BLE_TYQ_CH584M\BSP\inc\bsp_iwdg.h * @Description : * @@ -22,7 +22,7 @@ #define RB_IWDG_EN 0x80000000 // RO, watch-dog enable #define IWDG_TIMEOUT_MS (10000) -#define IWDG_FEED_MS (1000) +#define IWDG_FEED_MS (3000) #define IWIG_FEED_EVENT (0x01 << 0) diff --git a/BSP/inc/bsp_valve.h b/BSP/inc/bsp_valve.h index 2ad705a..ba42bc7 100644 --- a/BSP/inc/bsp_valve.h +++ b/BSP/inc/bsp_valve.h @@ -36,9 +36,9 @@ extern tmosTaskID vavle_task_id; -#define VALVE_LOW_VBAT_ALARM_PERIOD_MS (1600 * 60 * 10) +#define VALVE_LOW_VBAT_ALARM_PERIOD_MS (1000 * 60 * 10) -#define VALVE_DECT_PERIOD_MS (1600 * 60 * 10) +#define VALVE_DECT_PERIOD_MS (1000 * 60 * 10) #define CHARGE_TIME_MS (1500) diff --git a/BSP/src/bsp_iwdg.c b/BSP/src/bsp_iwdg.c index d3df5c1..2f3a0ee 100644 --- a/BSP/src/bsp_iwdg.c +++ b/BSP/src/bsp_iwdg.c @@ -2,7 +2,7 @@ * @Author : stark1898y 1658608470@qq.com * @Date : 2024-12-15 16:13:41 * @LastEditors : stark1898y 1658608470@qq.com - * @LastEditTime : 2025-05-16 18:35:06 + * @LastEditTime : 2025-05-21 13:11:02 * @FilePath : \BLE_TYQ_CH584M\BSP\src\bsp_iwdg.c * @Description : * @@ -34,11 +34,11 @@ uint16_t IWDG_ProcessEvent(uint8_t task_id, uint16_t events) // seconds = CH5XX_GetTimeStamp(&tick_1sec); // logDebug("seconds = %d.%d", seconds, tick_1sec * 1000 / 32768); FEED_IWDG(); - logDebug("IWDG feed"); + // logDebug("IWDG feed"); // 获取tmos系统堆的剩余内存大小 // uint8_t* a = tmos_msg_allocate(1); logDebug("tmos_memory_getlen = %d" , tmos_memory_getlen()); - tmos_start_task(task_id, IWIG_FEED_EVENT, MS1_TO_SYSTEM_TIME(IWDG_FEED_MS)); + // tmos_start_task(task_id, IWIG_FEED_EVENT, MS1_TO_SYSTEM_TIME(IWDG_FEED_MS)); return (events ^ IWIG_FEED_EVENT); } return 0; @@ -80,7 +80,7 @@ void IWDG_Init(uint16_t ms) IWDGTaskId = TMOS_ProcessEventRegister(IWDG_ProcessEvent); // tmos_set_event(IWDGTaskId, IWIG_FEED_EVENT); - tmos_start_task(IWDGTaskId, IWIG_FEED_EVENT, MS1_TO_SYSTEM_TIME(IWDG_FEED_MS)); + tmos_start_reload_task(IWDGTaskId, IWIG_FEED_EVENT, MS1_TO_SYSTEM_TIME(IWDG_FEED_MS)); } // #define RB_RESET_FLAG 0x07 // RO: recent reset flag diff --git a/BSP/src/bsp_valve.c b/BSP/src/bsp_valve.c index 56d87e3..7f2bda7 100644 --- a/BSP/src/bsp_valve.c +++ b/BSP/src/bsp_valve.c @@ -702,3 +702,37 @@ void TMR3_IRQHandler(void) // TMR3 定时中断 cap_flag = 1; } } + +#if 0 + // GPIOA_ModeCfg(GPIO_Pin_2, GPIO_ModeIN_Floating); + + // TMR3功能引脚映射选择位: + // 1:TMR3_/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(FREQ_SYS ); // 设置捕捉超时时间 + TMR3_CAPTimeoutCfg(GetSysClock() / 100); // 设置捕捉超时时间 10ms + + // TMR3_CAPTimeoutCfg(0x3FFFFFF); // 设置捕捉超时时间 + TMR3_DMACfg(ENABLE, (uint16_t)(uint32_t)&CapBuf[0], (uint16_t)(uint32_t)&CapBuf[20], Mode_Single); + TMR3_ITCfg(ENABLE, TMR0_3_IT_DMA_END); // 开启DMA完成中断 + PFIC_EnableIRQ(TMR3_IRQn); + + logDebug("TMR3_CapInit"); + while(capFlag == 0); + capFlag = 0; + for(uint8_t i = 0; i < 20; i++) + { + logDebug("%08ld ", CapBuf[i] & 0x1ffffff); // 26bit, 最高位表示 高电平还是低电平 + uint16_t t = ((CapBuf[i] & 0x1ffffff) * 1.0f) / FREQ_SYS * 1000000; + uint16_t f = 1000000 / t; + logDebug("T = %04d us, f = %04d Hz", t, f); + BSP_UART1_TxLoop(); + } + + // DelayMs(1000 * 30); + +#endif diff --git a/Ld/Link.ld b/Ld/Link.ld index e847cdb..beedf6a 100644 --- a/Ld/Link.ld +++ b/Ld/Link.ld @@ -3,7 +3,7 @@ ENTRY( _start ) MEMORY { FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 448K - RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K + RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 96K } SECTIONS