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