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.h |   10 +
 keil/include/main/main.c                 |   18 ++
 pin_config.c                             |    6 +
 keil/include/src/Radio/lora_1268.h       |    1 
 keil/include/drivers/global_param.h      |    3 
 keil/include/src/Radio/lora_1268.c       |   34 ++++++
 keil/include/drivers/serial_at_cmd_app.c |  190 +++++++++++++++++++++++++++++++++++++-
 keil/include/drivers/uwb_app.c           |    3 
 keil/include/board/board.c               |    6 
 9 files changed, 249 insertions(+), 22 deletions(-)

diff --git a/keil/include/board/board.c b/keil/include/board/board.c
index b5af2ba..c273832 100644
--- a/keil/include/board/board.c
+++ b/keil/include/board/board.c
@@ -414,11 +414,13 @@
 		 // 判断是Airtag还是免布线模式
     io_pin_mux_set(MODE_CHANGE_PIN, IO_FUNC0);
 		gpio_pin_set_dir( MODE_CHANGE_PIN, GPIO_DIR_IN, 0);
-		io_pull_set(MODE_CHANGE_PIN , IO_PULL_DOWN, IO_PULL_UP_LEVEL2);
+		//io_pull_set(MODE_CHANGE_PIN , IO_PULL_DOWN, IO_PULL_UP_LEVEL2);
+	io_pull_set(MODE_CHANGE_PIN , IO_PULL_DOWN, IO_PULL_UP_NONE);//	修改了
 	 // 判断是休眠还是工作模式
     io_pin_mux_set(SLEEP_PIN, IO_FUNC0);
 		gpio_pin_set_dir(SLEEP_PIN, GPIO_DIR_IN, 0);
-		io_pull_set(SLEEP_PIN , IO_PULL_DOWN, IO_PULL_UP_LEVEL2);
+		//io_pull_set(SLEEP_PIN , IO_PULL_DOWN, IO_PULL_UP_LEVEL2);//	修改了
+	io_pull_set(SLEEP_PIN , IO_PULL_DOWN, IO_PULL_UP_NONE);//	修改了
 	//初始化NRST脚
 	io_pin_mux_set(LORA_NRST, IO_FUNC0);
 	gpio_pin_set_dir(LORA_NRST , GPIO_DIR_OUT, 1);
diff --git a/keil/include/drivers/global_param.h b/keil/include/drivers/global_param.h
index fc22ed5..c3bdfed 100644
--- a/keil/include/drivers/global_param.h
+++ b/keil/include/drivers/global_param.h
@@ -51,6 +51,7 @@
 #define      NEARBASE_ID10                   0x1a
 
 #define 	POWER           		0x1B
+#define 	SET_START_TIME     	0x1B
 #define		IMU_THRES				   	0x1C
 #define   NOMOVESLEEP_TIME    0x1D
 #define   MOTOR_ENABLE        0x1E
@@ -66,7 +67,7 @@
 #define 	CNT_RESTART						0x30
 #define 	CNT_REBOOT						0x31
 #define 	CNT_UPDATE						0x32
-#define   BIND_DEV_ID           0x40
+
 
 /*------------END Map Definition-------------------*/
 
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;
+//    }
+
+}
diff --git a/keil/include/drivers/serial_at_cmd_app.h b/keil/include/drivers/serial_at_cmd_app.h
index ab65408..46249d5 100644
--- a/keil/include/drivers/serial_at_cmd_app.h
+++ b/keil/include/drivers/serial_at_cmd_app.h
@@ -5,9 +5,11 @@
 #include "stdint.h"
 
 #define MAX_FRAME_LEN		50
-#define CMD_READ	1
-#define CMD_WRITE	2
-#define CMD_REPLY 3
+#define CMD_WRITE	1
+#define CMD_READ	2
+#define CMD_BLE_TO_MK	1
+#define CMD_MK_TO_BLE	2
+#define CMD_MK_REPLY 2
 #define APP_CONFIG_IAPFLAG_MAP  0x0402D010
 #define APP_CONFIG_IAPFLAG_SECTOR_ADDR 0x0402D000	
 typedef enum{	UsartReceiveWaitHead0,// 55  0d
@@ -40,7 +42,7 @@
 void UsartParseDataHandler(uint8_t data);
 
 void Usart0ParseDataHandler(uint8_t data);
-
+void Usart3ParseDataHandler(uint8_t data);//UART蓝牙数据分析处理
 void UpdateProcess(uint8_t index);
 #endif
 
diff --git a/keil/include/drivers/uwb_app.c b/keil/include/drivers/uwb_app.c
index 315abe6..956fe4e 100644
--- a/keil/include/drivers/uwb_app.c
+++ b/keil/include/drivers/uwb_app.c
@@ -751,6 +751,7 @@
                        Anchor_RecNearPoll(rec_nearbase_num);
                 }
 				}
+				//LOG_INFO(TRACE_MODULE_APP,"存在时间%d. \r\n",	tagofflinetime[0]);
 				
 				
 }
@@ -1064,7 +1065,7 @@
                 }
                 
                 //gpio_pin_clr(SCL_PIN);//测试
-								LOG_INFO(TRACE_MODULE_APP,"标签ID:%X,距离: %d 信号强度ANT0:%f,信号强度ANT2: %f\r\n",g_com_map[BIND_DEV_ID],distance,sts_rssi[0],sts_rssi[2]);
+								//LOG_INFO(TRACE_MODULE_APP,"标签ID:%X,距离: %d 信号强度ANT0:%f,信号强度ANT2: %f\r\n",g_com_map[BIND_DEV_ID],distance,sts_rssi[0],sts_rssi[2]);
                 return 1;//返回发送成功标志
             }
 
diff --git a/keil/include/main/main.c b/keil/include/main/main.c
index ef59210..63c43e5 100644
--- a/keil/include/main/main.c
+++ b/keil/include/main/main.c
@@ -118,6 +118,7 @@
 uint8_t group_id,enable_sleep_count;
 uint32_t dev_id;
 uint16_t disoffset;
+uint16_t set_mk_time;
 uint8_t flag_sleeptimer,flag_secondtask,secondtask_count;
 float nomove_count;
 // Default pool descriptor.
@@ -351,6 +352,8 @@
 }
 uint8_t bat_percent;
 uint8_t  stationary_flag;
+extern uint8_t send_flag;
+extern uint8_t txdone;
 void mcu_deep_sleep(void)
 {
             uint32_t lock;
@@ -368,10 +371,7 @@
 	 // Disable watchdog timer
     wdt_close(WDT_ID0);
     LOG_INFO(TRACE_MODULE_APP, "UCI FiRa example\r\n");
-//	delay_ms(300);
-//	LOG_INFO(TRACE_MODULE_APP, "进入休眠模式\r\n");//测试
-//	 power_init();
-//	mcu_deep_sleep();
+
 	if(gpio_pin_get_val(SLEEP_PIN))
 	{
 	if(gpio_pin_get_val(MODE_CHANGE_PIN))//记得改回来与正式的相反
@@ -475,6 +475,7 @@
         power_manage();
 				if(!gpio_pin_get_val(SLEEP_PIN))
 				{
+				gpio_pin_clr(LORA_NRST);//lora休眠
 				LOG_INFO(TRACE_MODULE_APP, "进入休眠模式\r\n");
 				mcu_deep_sleep();
 				}
@@ -493,6 +494,11 @@
 		sleep_timer_start(__MS_TO_32K_CNT(SLEEP_TIMER_NUM));//测试
 			 while (1)
 				{
+					if(send_flag)
+					{
+						LOG_INFO(TRACE_MODULE_APP,"发送数量%d. \r\n",txdone);
+						send_flag=0;
+					}
 				uwb_app_poll();//我们的测距逻辑
 				if(flag_secondtask)
         {
@@ -503,6 +509,7 @@
 				Lora_Tx_Poll();	
 				if(!gpio_pin_get_val(SLEEP_PIN))
 				{
+				//gpio_pin_clr(LORA_NRST);//lora休眠
 				LOG_INFO(TRACE_MODULE_APP, "进入休眠模式\r\n");
 				mcu_deep_sleep();
 				}
@@ -512,6 +519,9 @@
 }else{
 //delay_ms(300);
 	LOG_INFO(TRACE_MODULE_APP, "进入休眠模式\r\n");
+	//gpio_pin_clr(LORA_NRST);//lora休眠
+//	spi_close(SPI_ID0);
+	//lora_in_sleep();
 	 power_init();
 	mcu_deep_sleep();
 }
diff --git a/keil/include/src/Radio/lora_1268.c b/keil/include/src/Radio/lora_1268.c
index affe968..e3c848a 100644
--- a/keil/include/src/Radio/lora_1268.c
+++ b/keil/include/src/Radio/lora_1268.c
@@ -313,7 +313,7 @@
 	checksum = Checksum_u16(lora_sendbuffer,9+data_length);
 	memcpy(&lora_sendbuffer[9+data_length],&checksum,2);
 	Radio.Send(lora_sendbuffer,data_length+11);
-
+LOG_INFO(TRACE_MODULE_APP, "进入回复\r\n");
   //LORA_3029_SINGLE_SEND(lora_sendbuffer,data_length+11,0);
   //  Delay_Ms(100);
 }
@@ -360,7 +360,19 @@
 
      
 }
-
+void lora_in_sleep(void)
+{
+				 //SPI0/MOSI/MISO/CLK/CS
+//	gpio_pin_set(LORA_CS);
+//	gpio_pin_clr(LORA_MOSI);
+//	gpio_pin_clr(LORA_MISO);
+//	gpio_pin_clr(LORA_CLK);
+//	gpio_pin_clr(LORA_IRQ);
+	//gpio_pin_clr(LORA_NRST);
+	//gpio_pin_clr(LORA_NRST);//lora休眠
+	 Radio.Standby();
+    Radio.Sleep();
+}
 ////States_t State = LOWPOWER;
 
 //////int8_t RssiValue = 0;
@@ -377,9 +389,11 @@
 //uint16_t current_count;
 //extern wg_state_enum wg_state;
 uint8_t txdone=0;
+uint8_t send_flag;
 void OnTxDone( void )
 { 
 	  txdone++;
+		
     if(flag_writepara_needreset) //配置写入完成设备需要重启
     {
         printf("网关下发配置写入完成,重启");
@@ -393,7 +407,9 @@
     }
     else
     {
+			
     Radio.Rx( 50 );
+			send_flag=1;
     //LORA_LED_OFF;
     }
 }
@@ -427,6 +443,8 @@
 uint8_t LoraUp_flag;
 uint16_t REV_WG_pack=0; 
 uint8_t rxdone=0;
+extern uint16_t set_mk_time;
+extern mk_send_message_to_BLE(void);
 void OnRxDone( uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr )
 {  
 				uint16_t checksum1;
@@ -516,7 +534,13 @@
                         default :
                             memcpy(&rec_value,&RX_Buffer[PWTAG_WRITE_VALUE_IDX],2);
                             g_com_map[rec_index/2] = rec_value;
-                            save_com_map_to_flash();
+//														if(rec_index/2==POWER)//新增判断
+//														{
+//														 memcpy(&set_mk_time,&RX_Buffer[PWTAG_WRITE_VALUE_IDX],2);
+//															//mk_send_message_to_BLE();	//发送给蓝牙
+//															//LOG_INFO(TRACE_MODULE_APP, "修改成功g_com表为%#x,时间为%#x\r\n",g_com_map[POWER],set_mk_time);
+//														}
+                           // save_com_map_to_flash();
                             LoraRspWriteCommap(SUBMSG_WRITE_ANCPARA);
                             flag_writepara_needreset = 1;
                             no_rx_flag = 1;                           
@@ -546,7 +570,8 @@
 									}
 								}
 
-							}						
+							}
+LOG_INFO(TRACE_MODULE_APP, "进入回复2\r\n");						
     if(!no_rx_flag)
     {
         if(lora_jianting_flag&&LoraUp_flag==0)
@@ -570,6 +595,7 @@
 void OnRxTimeout( void )
 {
     Radio.Standby();
+	
     if(lora_jianting_flag)
     {
         SwitchLoraSettings(UWB_CHANNEL_FRQ+group_id,UWB_CHANNEL_SF,0);
diff --git a/keil/include/src/Radio/lora_1268.h b/keil/include/src/Radio/lora_1268.h
index b4eed72..27e2efe 100644
--- a/keil/include/src/Radio/lora_1268.h
+++ b/keil/include/src/Radio/lora_1268.h
@@ -199,4 +199,5 @@
 void OnRxTimeout( void );
 void OnRxError( void );
 void SwitchLoraSettings(uint32_t freq,uint8_t sf,uint8_t power);
+void lora_in_sleep(void);
 #endif
\ No newline at end of file
diff --git a/pin_config.c b/pin_config.c
index a6e90d8..e8f2bf8 100644
--- a/pin_config.c
+++ b/pin_config.c
@@ -42,6 +42,7 @@
 #include "board.h"
 extern void (*Usart0ParseDataCallback)(uint8_t);
 extern void Usart0ParseDataHandler(uint8_t data);
+extern void Usart3ParseDataHandler(uint8_t data);//UART蓝牙数据分析处理
 struct UART_CFG_T test_uart_cfg =
 {
     .parity = UART_PARITY_NONE,
@@ -103,6 +104,9 @@
     io_pin_mux_set(LORA_CLK, IO_FUNC2);
 	  io_pin_mux_set(LORA_IRQ, IO_FUNC0);
 		io_pin_mux_set(LORA_NRST, IO_FUNC0);
+//		io_pull_set(IO_PIN_11, IO_HIGH_Z, IO_PULL_UP_NONE);
+//    io_pull_set(IO_PIN_12, IO_HIGH_Z, IO_PULL_UP_NONE);
+//    io_pull_set(IO_PIN_13, IO_HIGH_Z, IO_PULL_UP_NONE);
 		//初始化lora引脚
     // UART0 TX/RX
     io_pin_mux_set(IO_PIN_5, IO_FUNC4);
@@ -134,7 +138,7 @@
 {
 //        			io_pin_mux_set(_4G_USART_RX_Pin,IO_FUNC0);//把原先io 变为普通GPIO
                 gpio_pin_set_dir(LORA_IRQ , GPIO_DIR_IN, 0);
-                io_pull_set(LORA_IRQ, IO_PULL_DOWN, IO_PULL_UP_NONE);//此处中间参数修改过现在这个能少190ua左右电流
+                io_pull_set(LORA_IRQ, IO_PULL_DOWN, IO_PULL_UP_LEVEL2);//此处中间参数修改过现在这个能少190ua左右电流
 								gpio_enable_irq(LORA_IRQ, GPIO_IRQ_TYPE_RISING_EDGE, irq_handler);
 }
 void uart0_Init_normal(void)

--
Gitblit v1.9.3