diff --git a/.vscode/settings.json b/.vscode/settings.json index eb4e50f..38c6d82 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -18,11 +18,25 @@ } ], "files.associations": { + "*.sqlbook": "sql", + "*.ndjson": "jsonl", "*.dbclient-js": "javascript", "config.h": "c", "ch58xble_lib.h": "c", "bsp_uart.h": "c", "bsp_iwdg.h": "c", - "log.h": "c" + "log.h": "c", + "hal.h": "c", + "multicentral.h": "c", + "bsp_valve.h": "c", + "shell_port.h": "c", + "atomic": "c", + "cstddef": "c", + "type_traits": "c", + "gattprofile.h": "c", + "bsp_flash.h": "c", + "shell.h": "c", + "ch58x_uart.h": "c", + "bsp_tim.h": "c" } } \ No newline at end of file diff --git a/APP/multiCentral.c b/APP/multiCentral.c index f9bde8c..34a3d8c 100644 --- a/APP/multiCentral.c +++ b/APP/multiCentral.c @@ -819,6 +819,16 @@ static void centralEventCB(gapRoleEvent_t *pEvent) centralScanRes = 0; tmos_stop_task(centralConnList[connItem].taskID, START_READ_RSSI_EVT); logDebug("Discovering...\r\n"); + //更新阀门状态信息 + if (bt_connect_flag == 1) + { + bt_connect_flag = 0; + valve_list.valve_data[0].valve_connct_status = FALSE; + valve_list.valve_data[0].valve_switch_status = FALSE; + valve_list.valve_data[0].valve_temp = FALSE; + BSP_Bt_Valve_Resp(kValveConncetStatus, valve_list.valve_data[0].valve_id, valve_list.valve_data[0].valve_mac, FALSE);//表示连接成功 + } + } break; case GAP_LINK_PARAM_UPDATE_EVENT: @@ -1242,8 +1252,6 @@ int BSP_Master_Receive_Data(uint8_t task_id, uint8_t *data, uint16_t len) return -5; } - // logDebug("BT 数据帧校验通过"); - // //有效数据长度 size_t data_len = (datalength + 5); ret = data_len; diff --git a/APP/multiCentral_main.c b/APP/multiCentral_main.c index 4f8869c..97925fa 100644 --- a/APP/multiCentral_main.c +++ b/APP/multiCentral_main.c @@ -101,6 +101,10 @@ int main(void) 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/bsp/inc/bsp_uart.h b/bsp/inc/bsp_uart.h index 0d032f9..4ca0ade 100644 --- a/bsp/inc/bsp_uart.h +++ b/bsp/inc/bsp_uart.h @@ -2,7 +2,7 @@ * @Author: mbw * @Date: 2024-12-06 16:52:29 * @LastEditors: mbw && 1600520629@qq.com - * @LastEditTime: 2025-01-02 11:22:39 + * @LastEditTime: 2025-04-22 15:24:49 * @FilePath: \ble_-tyq_-bjq_-ch584-m\bsp\inc\bsp_uart.h * @Description: * @ @@ -38,6 +38,8 @@ typedef struct __attribute__((packed)) uint8_t buf[256]; } BTFrameData; +extern uint8_t bt_connect_flag; +extern uint8_t BtRxTaskId; void BSP_UART1_Init(void); unsigned int BSP_Uart1_Receive_Data(void *buf, unsigned int len); @@ -52,6 +54,6 @@ unsigned int BSP_Uart3_Send_Data(const void *buf, unsigned int len); uint8_t _CheckSum(const uint8_t *data, size_t len); uint8_t BT_GenerateRawFrame(BTFrameData *pRawData, const uint8_t *p_src, uint8_t src_len); -extern uint8_t BtRxTaskId; + #endif // !__BSP_UART_H__ diff --git a/bsp/inc/bsp_valve.h b/bsp/inc/bsp_valve.h index e6172ee..7f9896b 100644 --- a/bsp/inc/bsp_valve.h +++ b/bsp/inc/bsp_valve.h @@ -2,7 +2,7 @@ * @Author: mbw * @Date: 2024-12-09 11:40:04 * @LastEditors: mbw && 1600520629@qq.com - * @LastEditTime: 2025-01-02 14:09:43 + * @LastEditTime: 2025-04-22 13:19:22 * @FilePath: \ble_-tyq_-bjq_-ch584-m\bsp\inc\bsp_valve.h * @Description: * @ @@ -33,6 +33,7 @@ typedef enum kValveCmdRep, kValveCmdRemAll,//移除所有的阀门地址 kValveEventStatus,//阀门状态包 + kValveConncetStatus,//阀门状态包 kValveCmdMax, } ValveCmdType; diff --git a/bsp/src/bsp_flash.c b/bsp/src/bsp_flash.c index e00463d..22f6de4 100644 --- a/bsp/src/bsp_flash.c +++ b/bsp/src/bsp_flash.c @@ -98,6 +98,7 @@ void BSP_FLASH_Init(void) if (flash_write_flag != FLASH_INFO_WRITE_FLAG_VAL) // 用以防止刷掉写入的数据 { logDebug("flash_write_flag != FLASH_INFO_WRITE_FLAG_VAL"); + logDebug("BSP_FLASH_Init"); flash_write_flag = FLASH_INFO_WRITE_FLAG_VAL; // 擦除数据 EEPROM_ERASE(FLASH_INFO_ADDR, DATA_FLASH_PAGE_SIZE); // 擦除待写区 diff --git a/bsp/src/bsp_tim.c b/bsp/src/bsp_tim.c index d08b2e2..3582b35 100644 --- a/bsp/src/bsp_tim.c +++ b/bsp/src/bsp_tim.c @@ -2,7 +2,7 @@ * @Author: mbw * @Date: 2024-12-07 15:13:24 * @LastEditors: mbw && 1600520629@qq.com - * @LastEditTime: 2024-12-16 14:54:45 + * @LastEditTime: 2025-04-24 09:42:42 * @FilePath: \ble_-tyq_-bjq_-ch584-m\bsp\src\bsp_tim.c * @Description: * @@ -11,12 +11,10 @@ #include "bsp_tim.h" #include "HAL.h" - -// tick_1ms_cnt��SysTick_Handler()��1ms +1 volatile uint32_t tick_1ms_cnt = 0; /** - * @description: ��SysTick��1ms��Ϊ���� + * @description: * @return {uint32_t} */ uint32_t BSP_Get_Tick(void) @@ -27,14 +25,13 @@ uint32_t BSP_Get_Tick(void) } -// SysTick�жϺ��� __INTERRUPT __HIGH_CODE void SysTick_Handler() { static uint8_t cnt_ms = 0; - SysTick->SR = 0; // ����жϱ�־ + SysTick->SR = 0; tick_1ms_cnt++; cnt_ms++; diff --git a/bsp/src/bsp_uart.c b/bsp/src/bsp_uart.c index 0370491..2fd4294 100644 --- a/bsp/src/bsp_uart.c +++ b/bsp/src/bsp_uart.c @@ -2,7 +2,7 @@ * @Author: mbw * @Date: 2024-12-06 16:52:30 * @LastEditors: mbw && 1600520629@qq.com - * @LastEditTime: 2025-01-02 11:38:30 + * @LastEditTime: 2025-04-22 15:16:57 * @FilePath: \ble_-tyq_-bjq_-ch584-m\bsp\src\bsp_uart.c * @Description: * @@ -43,6 +43,8 @@ uint8_t uart3_rx_buf[UART3_RX_BUFFER_LENGTH] = {0}; uint8_t BtRxTaskId; +uint8_t bt_connect_flag = 0; + BTFrameData bt_frame = {0}; /** * @description: 从帧起始符开始到校验码之前所有字节的和的模256,即各字节不计超过255的溢出值的二进制算术和。 @@ -310,7 +312,17 @@ uint16_t BSP_Send_Process(uint8_t *pdata) case kCmdData: valve_list.valve_data[0].valve_connct_status = 1; tmos_memcpy(&valve_list.valve_data[0].valve_switch_status, &master_rx_buf[3], master_rx_buf[2]); - BSP_Bt_Valve_Resp(kValveEventStatus, valve_list.valve_data[0].valve_id, valve_list.valve_data[0].valve_mac, 0); + + if ((bt_connect_flag != 1) && (valve_list.valve_data[0].valve_connct_status == 1)) + { + bt_connect_flag = 1; + logDebug("阀门连接成功"); + BSP_Bt_Valve_Resp(kValveConncetStatus, valve_list.valve_data[0].valve_id, valve_list.valve_data[0].valve_mac, TRUE);//表示连接成功 + } + else + { + BSP_Bt_Valve_Resp(kValveEventStatus, valve_list.valve_data[0].valve_id, valve_list.valve_data[0].valve_mac, TRUE); + } break; default: logError("不支持的命令: %d", master_rx_buf[1]); @@ -415,7 +427,7 @@ void BSP_UART3_Init(void) GPIOB_ModeCfg(UART3_TX_PIN, GPIO_ModeOut_PP_5mA); // TXD-配置推挽输出,注意先让IO口输出高电平 UART3_DefInit(); UART3_BaudRateCfg(460800); - UART3_ByteTrigCfg(UART_7BYTE_TRIG); + UART3_ByteTrigCfg(UART_1BYTE_TRIG); // 中断方式接收数据 UART3_INTCfg(ENABLE, RB_IER_LINE_STAT | RB_IER_RECV_RDY); PFIC_EnableIRQ(UART3_IRQn); diff --git a/bsp/src/bsp_valve.c b/bsp/src/bsp_valve.c index a7db48e..648e8e6 100644 --- a/bsp/src/bsp_valve.c +++ b/bsp/src/bsp_valve.c @@ -2,7 +2,7 @@ * @Author: mbw * @Date: 2024-12-09 11:40:10 * @LastEditors: mbw && 1600520629@qq.com - * @LastEditTime: 2025-01-04 13:02:54 + * @LastEditTime: 2025-04-22 15:15:24 * @FilePath: \ble_-tyq_-bjq_-ch584-m\bsp\src\bsp_valve.c * @Description: * @@ -305,6 +305,7 @@ void BSP_Bt_Valve_Updata(void) } +//蓝牙主机对报警器的响应函数。 state表示此对应的项目,可能是执行成功与否,可能是蓝牙连接状态吗,具体参考对应的case int BSP_Bt_Valve_Resp(uint8_t cmd, uint8_t id, uint8_t *mac_addr, uint8_t state) { uint8_t ret = 0; @@ -329,6 +330,13 @@ int BSP_Bt_Valve_Resp(uint8_t cmd, uint8_t id, uint8_t *mac_addr, uint8_t state) tmos_memcpy(&ptr->buf[0], &valve_list.valve_data[id - 1], sizeof(struct valve_data)); BT_GenerateRawFrame(&valve_frame_data, (uint8_t *)ptr, sizeof(struct valve_data)); break; + case kValveConncetStatus: + ptr->buf[0] = id; + tmos_memcpy(&ptr->buf[1], mac_addr, 6); + ptr->buf[7] = state; //0表示断开,1表示连接 + logDebug("连接状态:%d", ptr->buf[7]); + BT_GenerateRawFrame(&valve_frame_data, (uint8_t *)ptr, 9); + break; default: break; }