From 137bfae98beae9e016b0023f6e94eeaec2054da2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E9=A9=AC=5F666?= <13089258+pony-six-hundred-and-sixty-six@user.noreply.gitee.com> Date: Fri, 23 May 2025 18:02:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9A=82=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cproject | 765 +++++++++++++++++++++++++++++--------- .mrs/launch.json | 2 +- .project | 67 ++-- .template | 23 ++ APP/multiCentral.c | 13 +- APP/multiCentral_main.c | 7 +- BLE_TYQ_BJQ_CH584M.launch | 62 +++ BLE_TYQ_BJQ_CH584M.wvproj | Bin 202 -> 21870 bytes HAL/RTC.c | 5 +- bsp/inc/bsp_uart.h | 6 +- bsp/src/bsp_tim.c | 20 +- bsp/src/bsp_uart.c | 8 +- bsp/src/bsp_valve.c | 1 - 13 files changed, 747 insertions(+), 232 deletions(-) create mode 100644 BLE_TYQ_BJQ_CH584M.launch diff --git a/.cproject b/.cproject index fca4c0a..f028608 100644 --- a/.cproject +++ b/.cproject @@ -1,174 +1,595 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.mrs/launch.json b/.mrs/launch.json index f3acb26..0b58c4e 100644 --- a/.mrs/launch.json +++ b/.mrs/launch.json @@ -10,7 +10,7 @@ "useLocalOpenOCD": true, "executable": "c:/MounRiver/MounRiver_Studio2/resources/app/resources/win32/components/WCH/OpenOCD/OpenOCD/bin/openocd.exe", "configOptions": [ - "-f \"c:/MounRiver/MounRiver_Studio2/resources/app/resources/win32/components/WCH/OpenOCD/OpenOCD/bin/wch-riscv.cfg\"" + "-f \"c:/MounRiver/MounRiver_Studio2/resources/app/resources/win32/components/WCH/OpenOCD/OpenOCD/bin/wch-riscv.cfg\" -c \"chip_id CH58x\"" ], "gdbport": 3333, "telnetport": 4444, diff --git a/.project b/.project index 2aa28b2..38a9476 100644 --- a/.project +++ b/.project @@ -1,37 +1,34 @@ - BLE_TYQ_BJQ_CH584M - - - - - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - clean,full,incremental, - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - full,incremental, - - - - - - org.eclipse.cdt.core.cnature - org.eclipse.cdt.managedbuilder.core.managedBuildNature - org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - - - - 1602468250279 - - 22 - - org.eclipse.ui.ide.multiFilter - 1.0-name-matches-false-false-*.wvproj - - - - + BLE_TYQ_BJQ_CH584M + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + + + + + 6 + + org.eclipse.ui.ide.multiFilter + 1.0-name-matches-false-false-*.wvproj + + + + \ No newline at end of file diff --git a/.template b/.template index e69de29..6a72012 100644 --- a/.template +++ b/.template @@ -0,0 +1,23 @@ +Vendor=WCH +Toolchain=RISC-V +Series=CH58X +RTOS=NoneOS +MCU=CH583M +Link=WCH-Link +PeripheralVersion=1.0 +Description= +Mcu Type=CH58x +Address=0x00000000 +Target Path= +Exe Path= +Exe Arguments= +CLKSpeed=1 +DebugInterfaceMode=0 +Erase All=false +Program=false +Verify=false +Reset=false +SDIPrintf=false +Disable Power Output=false +Clear CodeFlash=false +Disable Code-Protect=false \ No newline at end of file diff --git a/APP/multiCentral.c b/APP/multiCentral.c index 34a3d8c..de3dc11 100644 --- a/APP/multiCentral.c +++ b/APP/multiCentral.c @@ -18,6 +18,7 @@ #define MASTER_DETECT_EVT (0X01 << 3) uint8_t MasterCtrTaskId; +uint8_t bt_conncet_cnt = 0; /********************************************************************* * MACROS @@ -90,7 +91,7 @@ uint8_t MasterCtrTaskId; #define DEFAULT_IO_CAPABILITIES GAPBOND_IO_CAP_NO_INPUT_NO_OUTPUT // Default service discovery timer delay in 0.625ms -#define DEFAULT_SVC_DISCOVERY_DELAY 10 +#define DEFAULT_SVC_DISCOVERY_DELAY 2 // Default parameter update delay in 0.625ms #define DEFAULT_PARAM_UPDATE_DELAY 1600 @@ -1255,12 +1256,12 @@ int BSP_Master_Receive_Data(uint8_t task_id, uint8_t *data, uint16_t len) // //有效数据长度 size_t data_len = (datalength + 5); ret = data_len; - if (data[index + 1] == kCmdCloseVavle) // 0x02 代表了其是控制阀门响应 + if (data[index + 1] == 0x02) // 0x02 代表了其是控制阀门响应 { // logDebug("BT 控制阀门响应包"); if (data[index + datalength + 2] == 1) // 响应数据位 { - logInfo("关闭阀门成功"); + logInfo("BT 控制阀门成功"); } else { @@ -1337,6 +1338,12 @@ uint16_t Master_ProcessEvent(uint8_t task_id, uint16_t events) if (Flash_Get_Valve_Num()) { logDebug("有设备,尝试连接\r\n"); + bt_conncet_cnt++; + if (bt_conncet_cnt > 60)//如果多次重试都不行,直接重启设备 + { + bt_conncet_cnt = 0; + PFIC_SystemReset(); + } tmos_start_task(task_id, MASTER_CONNECT_EVT, 1600); } } diff --git a/APP/multiCentral_main.c b/APP/multiCentral_main.c index 97925fa..7c681fd 100644 --- a/APP/multiCentral_main.c +++ b/APP/multiCentral_main.c @@ -74,7 +74,7 @@ int main(void) #if (defined(DCDC_ENABLE)) && (DCDC_ENABLE == TRUE) PWR_DCDCCfg(ENABLE); #endif - HSECFG_Capacitance(HSECap_18p); + HSECFG_Capacitance(HSECap_20p); SetSysClock(CLK_SOURCE_HSE_PLL_62_4MHz); #if (defined(HAL_SLEEP)) && (HAL_SLEEP == TRUE) GPIOA_ModeCfg(GPIO_Pin_All, GPIO_ModeIN_PU); @@ -96,15 +96,12 @@ int main(void) logDebug("test log debug\n"); #endif + CH58x_BLEInit(); HAL_Init(); GAPRole_CentralInit(); Central_Init(); - logDebug("get_ticks %d", BSP_Get_Tick()); - DelayMs(2000); - logDebug("get_ticks %d", BSP_Get_Tick()); - BSP_FLASH_Init(); BSP_Valve_Init(); BSP_UART1_Init(); // BT UART diff --git a/BLE_TYQ_BJQ_CH584M.launch b/BLE_TYQ_BJQ_CH584M.launch new file mode 100644 index 0000000..482dea7 --- /dev/null +++ b/BLE_TYQ_BJQ_CH584M.launch @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BLE_TYQ_BJQ_CH584M.wvproj b/BLE_TYQ_BJQ_CH584M.wvproj index 02d84e695ff5691ab6b468e95a367d3f08c81b78..e30699b9327506b963e6e9e037b520e0995b8aa5 100644 GIT binary patch literal 21870 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 EymtRf-v9sr diff --git a/HAL/RTC.c b/HAL/RTC.c index 0c6366a..3a01e15 100644 --- a/HAL/RTC.c +++ b/HAL/RTC.c @@ -172,13 +172,14 @@ void HAL_TimeInit(void) Lib_Calibration_LSI(); #else sys_safe_access_enable(); - R8_CK32K_CONFIG &= ~RB_CLK_INT32K_PON; + // R8_CK32K_CONFIG &= ~RB_CLK_INT32K_PON; + R8_CK32K_CONFIG |= RB_CLK_INT32K_PON; sys_safe_access_disable(); sys_safe_access_enable(); R8_CK32K_CONFIG |= RB_CLK_OSC32K_XT | RB_CLK_XT32K_PON; sys_safe_access_disable(); #endif - RTC_InitTime(2020, 1, 1, 0, 0, 0); //RTCʱӳʼǰʱ + RTC_InitTime(2025, 5, 20, 0, 0, 0); //RTCʱӳʼǰʱ tmos_memset( &conf, 0, sizeof(bleClockConfig_t) ); conf.ClockAccuracy = CLK_OSC32K ? 1000 : 50; diff --git a/bsp/inc/bsp_uart.h b/bsp/inc/bsp_uart.h index 4ca0ade..d65feca 100644 --- a/bsp/inc/bsp_uart.h +++ b/bsp/inc/bsp_uart.h @@ -13,15 +13,19 @@ #include "CH58x_common.h" +#define DEVICE_TYPE_TYQ_LY + + #define BT_START_EVT (0X01 << 0) #define BT_REC_EVT (0X01 << 1) #define BT_INFO_UPDATA_EVT (0X01 << 2) #define BT_SEND_EVT (0X01 << 3)// #define BT_REC_EVT_FINISH (0X01 << 4) //接收完成事件 +#ifdef DEVICE_TYPE_TYQ_LY #define UART3_RX_PIN GPIO_Pin_20 //PB20 #define UART3_TX_PIN GPIO_Pin_21 // PB21 - +#endif #define BT_UART_TX_PIN GPIO_Pin_9 //PA9 #define BT_UART_RX_PIN GPIO_Pin_8 //PA8 diff --git a/bsp/src/bsp_tim.c b/bsp/src/bsp_tim.c index 3582b35..7c782bb 100644 --- a/bsp/src/bsp_tim.c +++ b/bsp/src/bsp_tim.c @@ -11,7 +11,7 @@ #include "bsp_tim.h" #include "HAL.h" -volatile uint32_t tick_1ms_cnt = 0; +// volatile uint32_t tick_1ms_cnt = 0; /** * @description: @@ -25,15 +25,15 @@ uint32_t BSP_Get_Tick(void) } -__INTERRUPT -__HIGH_CODE -void SysTick_Handler() -{ - static uint8_t cnt_ms = 0; +// __INTERRUPT +// __HIGH_CODE +// void SysTick_Handler() +// { +// static uint8_t cnt_ms = 0; - SysTick->SR = 0; - tick_1ms_cnt++; +// SysTick->SR = 0; +// tick_1ms_cnt++; - cnt_ms++; -} +// cnt_ms++; +// } diff --git a/bsp/src/bsp_uart.c b/bsp/src/bsp_uart.c index 2fd4294..b3200dc 100644 --- a/bsp/src/bsp_uart.c +++ b/bsp/src/bsp_uart.c @@ -369,7 +369,7 @@ uint16_t BT_ProcessEvent(uint8_t task_id, uint16_t events) } else if (events & BT_REC_EVT) { - logDebug("BT_REC_EVT"); + // logDebug("BT_REC_EVT"); if (bt_recv_end_flag) { bt_recv_end_flag = 0; @@ -420,12 +420,16 @@ void BSP_UART1_Init(void) /*调试接口*/ void BSP_UART3_Init(void) { - GPIOPinRemap(ENABLE, RB_PIN_UART3); +#ifdef DEVICE_TYPE_TYQ_LY + GPIOPinRemap(ENABLE, RB_PIN_UART3); /* 配置串口3:先配置IO口模式,再配置串口 */ GPIOB_SetBits(UART3_TX_PIN); GPIOB_ModeCfg(UART3_RX_PIN, GPIO_ModeIN_PU); // RXD-配置上拉输入 GPIOB_ModeCfg(UART3_TX_PIN, GPIO_ModeOut_PP_5mA); // TXD-配置推挽输出,注意先让IO口输出高电平 +#endif + UART3_DefInit(); + UART3_BaudRateCfg(460800); UART3_ByteTrigCfg(UART_1BYTE_TRIG); // 中断方式接收数据 diff --git a/bsp/src/bsp_valve.c b/bsp/src/bsp_valve.c index 648e8e6..b8dfae6 100644 --- a/bsp/src/bsp_valve.c +++ b/bsp/src/bsp_valve.c @@ -275,7 +275,6 @@ void BSP_Bt_Valve_Updata(void) { return; } - tmos_memset(&valve_list, 0, sizeof(valve_data_list_t)); for (int i = 1; i < MAX_VALVE_NUM; i++) // 这个循环是为了将数据拷贝到valve_list中, 并且保证id号和flash对应起来