From 62f6fe8e906f8c17493d154f5567ba8a7ab4c0cf Mon Sep 17 00:00:00 2001 From: chen <15335560115@163.com> Date: 星期四, 26 六月 2025 18:13:38 +0800 Subject: [PATCH] 注释掉了串口逻辑,加入了与蓝牙串口通信逻辑,能够修改参数,但网关下发配置会出现hardfault未解决 --- keil/include/drivers/serial_at_cmd_app.c | 190 ++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 185 insertions(+), 5 deletions(-) diff --git a/keil/include/drivers/serial_at_cmd_app.c b/keil/include/drivers/serial_at_cmd_app.c index 236c51b..d1ad26a 100644 --- a/keil/include/drivers/serial_at_cmd_app.c +++ b/keil/include/drivers/serial_at_cmd_app.c @@ -72,7 +72,7 @@ send_frame[1] = 0xAA; send_frame[2] = 0x03; send_frame[3] = data_length+5; - send_frame[4] = CMD_REPLY; +// send_frame[4] = CMD_REPLY; send_frame[5] = index; send_frame[6] = data_length; memcpy(&send_frame[7], &g_com_map[index], data_length); @@ -93,7 +93,7 @@ send_frame[1] = 0xAA; send_frame[2] = 0x03; send_frame[3] = data_length+5; - send_frame[4] = CMD_REPLY; +// send_frame[4] = CMD_REPLY; send_frame[5] = index; send_frame[6] = data_length; memcpy(&send_frame[7], &g_com_map[index], data_length); @@ -235,7 +235,7 @@ send_frame[0] = 0x55; send_frame[1] = 0xAA; send_frame[2] = 0x40; - send_frame[3] = CMD_REPLY; + //send_frame[3] = CMD_REPLY; send_frame[4] = data_length+6; send_frame[5] = index; memcpy(&send_frame[6], &g_com_map[index], data_length); @@ -275,7 +275,7 @@ uart_send(UART_ID0, send_frame,8, NULL); } uint16_t pack_checksum_test=0,test_calculate = 0; -void Usart0ParseDataHandler(uint8_t data)//UART蓝牙数据分析处理 +void Usart3ParseDataHandler(uint8_t data)//UART蓝牙数据分析处理 { // 全局变量 static Usart0ReceiveState usart0_receive_state = Usart0ReceiveWaitHead0; @@ -381,7 +381,7 @@ // 校验通过,处理数据 switch(pack_msg_type) { - case CMD_REPLY: + //case CMD_REPLY: case CMD_WRITE: //从mUsartReceivePack中读取pack_length长度的字节,放到全局变量中,赋值保存的参数并且存入flash @@ -495,5 +495,185 @@ // pack_length = 0; // } } +extern uint16_t set_mk_time; +void Send_Reply_To_Ble(void) +{ +static uint8_t send_frame[100]; +// uint16_t checksum = 0; + send_frame[0] = 0x55; + send_frame[1] = 0xAA; + send_frame[2] = 0x41; + send_frame[3] = CMD_MK_REPLY; + uart_send(UART_ID0, send_frame,4, NULL); +} +void mk_send_message_to_BLE(void) +{ +static uint8_t send_frame[100]; + uint16_t checksum = 0; + send_frame[0] = 0x55; + send_frame[1] = 0xAA; + send_frame[2] = 0x40; + send_frame[3] = CMD_MK_TO_BLE; + send_frame[4]=8;//数据长度 + send_frame[5]=0; + send_frame[6]=0; + send_frame[7]=0; + memcpy(&send_frame[8],&set_mk_time,2); + checksum=Checksum_u16(&send_frame[2],8); + memcpy(&send_frame[10],&checksum,2); + uart_send(UART_ID0, send_frame,12, NULL); +} +extern uint8_t bat_percent; +extern uint32_t dev_id; +void Usart0ParseDataHandler(uint8_t data)//UART蓝牙数据分析处理 +{ +// // 全局变量 +//static Usart0ReceiveState usart0_receive_state = Usart0ReceiveWaitHead0; +//static uint8_t index = 0; // 缓冲区索引 +//static uint8_t pack_cmd_type = 0; // 指令类型 +//static uint8_t pack_msg_type = 0; // 消息类型 +//static uint8_t pack_data_len = 0; // 数据长度 +//static uint8_t pack_param_addr = 0; // 参数地址 +//static uint16_t pack_checksum = 0; // 接收到的校验和 +//static uint16_t calculated_checksum = 0; // 计算得到的校验和 +//static uint8_t send_frame[256]; // 用于计算校验和的帧 +//static uint8_t frame_index = 0; // 帧缓冲区索引 +//static uint8_t pack_datalen = 0; +// +// LOG_INFO(TRACE_MODULE_APP,"收到 %#x\r\n",data); +// switch(usart0_receive_state) { +// case Usart0ReceiveWaitHead0: +// if(data == 0x55) { +// usart0_receive_state = Usart0ReceiveWaitHead1; +// // 初始化帧缓冲区 +// frame_index = 0; +// send_frame[frame_index++] = data; +// } +// break; +// +// case Usart0ReceiveWaitHead1: +// if(data == 0xAA) { +// usart0_receive_state = Usart0ReceiveWaitCmdType; +// send_frame[frame_index++] = data; +// } else { +// usart0_receive_state = Usart0ReceiveWaitHead0; +// } +// break; +// +// case Usart0ReceiveWaitCmdType: +// if(data == 64) { +// pack_cmd_type = data; +// usart0_receive_state = Usart0ReceiveWaitMsgType; +// send_frame[frame_index++] = data; +// } else { +// usart0_receive_state = Usart0ReceiveWaitHead0; +// } +// break; +// +// case Usart0ReceiveWaitMsgType: +// if(data == 0x2||data==0x1) { // 读写回复消息类型 +// pack_msg_type = data; +// usart0_receive_state = Usart0ReceiveWaitDataLen; +// send_frame[frame_index++] = data; +// } else { +// usart0_receive_state = Usart0ReceiveWaitHead0; +// } +// break; +// +// case Usart0ReceiveWaitDataLen: +// pack_data_len = data; +// index = 0; +// usart0_receive_state = Usart0ReceiveWaitData; +// send_frame[frame_index++] = data; +// break; +// +//// case Usart0ReceiveWaitParamAddr: +//// pack_param_addr = data; +//// if(pack_msg_type==CMD_READ) +//// { +//// usart0_receive_state = Usart0ReceiveWaitChecksum1; +//// pack_datalen=pack_data_len-6; +//// }else{ +//// usart0_receive_state = Usart0ReceiveWaitData; +//// } +//// send_frame[frame_index++] = data; +//// break; +// +// case Usart0ReceiveWaitData: +// send_frame[frame_index++] = data; +// mUsart2ReceivePack[index++] = data; +// +// if(index == pack_data_len-3) { +// usart0_receive_state = Usart0ReceiveWaitChecksum1; +// //pack_datalen=pack_data_len; +// } +// break; +// +// case Usart0ReceiveWaitChecksum1: +// pack_checksum = data; // 高字节 +// pack_checksum_test = data; // 高字节 +// send_frame[frame_index++] = data; +// usart0_receive_state = Usart0ReceiveWaitChecksum2; +// LOG_INFO(TRACE_MODULE_APP,"收到校验1 %#x\r\n",data); +// break; +// case Usart0ReceiveWaitChecksum2: +// pack_checksum |= data<<8; // 低字节 +// pack_checksum_test |= data<<8; // 低字节 +// LOG_INFO(TRACE_MODULE_APP,"收到校验2 %#x\r\n",data); +// // 计算校验和 (从第3个字节开始,长度为4+数据长度) +//// if(pack_msg_type!=CMD_REPLY) +//// { +// calculated_checksum = Checksum_u16(&send_frame[2],pack_data_len); +//// }else{ +//// //calculated_checksum = Checksum_u16(&send_frame[2],4); +//// +//// } +// test_calculate=calculated_checksum; +// LOG_INFO(TRACE_MODULE_APP,"收到校验 %#x,%#x\r\n",calculated_checksum,pack_checksum); +// // 验证校验和 +// if(pack_checksum == calculated_checksum) { +// // 校验通过,处理数据 +// switch(pack_msg_type) +// { +// case CMD_BLE_TO_MK: +// memcpy(&dev_id,&mUsart2ReceivePack[0],2); +// bat_percent=mUsart2ReceivePack[2]; +// memcpy(&set_mk_time,&mUsart2ReceivePack[3],2); +// memcpy(&g_com_map[DEV_ID],&dev_id,2); +// memcpy(&g_com_map[SET_START_TIME],&set_mk_time,2); +// Send_Reply_To_Ble(); +// LOG_INFO(TRACE_MODULE_APP,"收到蓝牙数据 set_mk_time %d,dev_id %04x,bat_percent %d\r\n",set_mk_time,dev_id,bat_percent); +// save_com_map_to_flash(); +// //memcpy((uint8_t*)&g_com_map + pack_param_addr*2, mUsart2ReceivePack, pack_datalen); +// + +// break; +//// case CMD_MK_TO_BLE: +//// //uart0_send_ComMap_to_BLE(pack_datalen,pack_param_addr); +//// +//// break; +////// case CMD_REPLY: +////// memcpy((uint8_t*)&g_com_map + pack_param_addr, mUsart2ReceivePack, pack_datalen); +////// save_com_map_to_flash(); +////// break; +// default: +// break; +// } +// } +// +// // 重置状态机 +// usart0_receive_state = Usart0ReceiveWaitHead0; +// index = 0; +// frame_index = 0; +// break; +// +// default: +// usart0_receive_state = Usart0ReceiveWaitHead0; +// index = 0; +// frame_index = 0; +// break; +// } + +} -- Gitblit v1.9.3