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/src/Radio/lora_1268.c | 151 +++++++++++--------------------------------------- 1 files changed, 33 insertions(+), 118 deletions(-) diff --git a/keil/include/src/Radio/lora_1268.c b/keil/include/src/Radio/lora_1268.c index 0ab8651..e3c848a 100644 --- a/keil/include/src/Radio/lora_1268.c +++ b/keil/include/src/Radio/lora_1268.c @@ -187,117 +187,6 @@ #define GET_USERKEY gpio_pin_get_val(SOS_PIN) void LoraReportPoll(void) { -//// // delay_ms(100); - -////#ifdef _USE_BAR -//// GetPressAndHeight(); -//// intheight = Height*100; -////#endif -////#ifdef _SMT_TEST -//// printf("气压值:%d",intheight); -////#endif - -////// TagListUpdate(); - -//// LoraReportFreqPoll(); -//// flag_getwgresp = 0; - -// SwitchLoraSettings(478,REPORT_CHANNEL_SF,22); - -//// if(heatbeat_count++>HEATBEAT_UPDATE_TIME && WG_Connected == wg_state) //如果心跳包到达上传时间,并且网关处于链接状态,就上传心跳包 -//// { -//// heatbeat_count = 0; -//// LoraHeartBeartPoll(); -//// return; -//// } -//// for(uint16_t i=0; i<report_ancnum-1; i++) -//// { -//// for(uint16_t j=0; j<report_ancnum-1-i; j++) -//// { -//// if(report_ancdist[j]>report_ancdist[j+1]) -//// { -//// uint16_t id,dist; -//// uint8_t bat; -//// id = report_ancid[j]; -//// dist = report_ancdist[j]; -//// report_ancid[j] = report_ancid[j+1]; -//// report_ancdist[j] = report_ancdist[j+1]; -//// report_ancid[j+1] = id; -//// report_ancdist[j+1] = dist; -//// } -//// } -//// } -//// -//// if(report_ancnum>LORA_REPORT_MAXANC_NUM) //考虑lora传输时间,最多发送10个基站数据。 -//// { -//// report_ancnum = LORA_REPORT_MAXANC_NUM; -//// } -//// -////#ifdef USE_GPS -//// lora_sendbuffer[MSG_TYPE_IDX] = LORA_MSGTYPE_TAGMSGTOWG_GPS; -//// lora_sendbuffer[MSG_LENGTH] = 4*report_ancnum+30; -////#else -//// BT_NUM=DMA_RXBuf_BT[0]; -//// if(SOS_KEY_STATE) -//// { -//// BT_NUM=0; -////// } -//// lora_sendbuffer[MSG_TYPE_IDX] = LORA_MSGTYPE_TAGMSGTOWG; -// lora_sendbuffer[MSG_TYPE_IDX] = LORA_MSGTYPE_TAGMSGTOWG_BT; -// //lora_sendbuffer[MSG_LENGTH] = 4*report_ancnum+4*BT_NUM+ANCID_IDX+3; -////#endif -// memcpy(&lora_sendbuffer[SOURCE_ID_IDX],&g_com_map[DEV_ID],2); -// memcpy(&lora_sendbuffer[DEST_ID_IDX],&wg_report_id,2); -// lora_sendbuffer[SEQNUM_IDX] = seq_num++; -// lora_sendbuffer[BAT_IDX] = bat_percent; -//// lora_sendbuffer[STATE_IDX] = !GET_USERKEY|stationary_flag<<1; -//// //GET_USERKEY这个是那个lora——busy那个引脚 -////// lora_sendbuffer[STATE_IDX]=0x01; -////// lora_sendbuffer[GATEWAY_CHANL]=0x02; -////// lora_sendbuffer[CHANL_NUM]=0x03; -//// -////#ifdef USE_GPS -//// memcpy(&lora_sendbuffer[GPS_JINGDU_IDX],&gps_jingdu,8); -//// memcpy(&lora_sendbuffer[GPS_WEIDU_IDX],&gps_jingdu,8); -//// memcpy(&lora_sendbuffer[GPS_HEIGHT_IDX],&gps_height,8); -//// lora_sendbuffer[GPS_STATE_IDX] = gps_state; -//// lora_sendbuffer[GPS_SATEL_NUM_IDX] = gps_satel_num; -//// lora_sendbuffer[GPS_SPOWER_IDX] = gps_signalpower; -//// lora_sendbuffer[GPS_CHAFENLINGQI] = gps_chafenlingqi; -////#endif -//// memcpy(&lora_sendbuffer[BAR_HEIGHT_IDX],&intheight,2); -//// lora_sendbuffer[BT_ANCID_IDX] = report_ancnum; -//// memcpy(&lora_sendbuffer[BT_ANCID_IDX+1],report_ancid,report_ancnum*2); -//// memcpy(&lora_sendbuffer[BT_ANCID_IDX+report_ancnum*2+1],report_ancdist,report_ancnum*2); -//// uint8_t LORA_RETRANSNUSSION_BT=0; -////// -////// num[0]=REV_RX_NUM; -////// num[1]=REV_POLL_NUM; -////// num[2]=REPLY_POLL_NUM; -//// LORA_RETRANSNUSSION_BT=BT_ANCID_IDX+report_ancnum*4+1; -//// lora_sendbuffer[LORA_RETRANSNUSSION_BT] = 0x2D; //蓝牙上传标识符 - -//// memcpy(&lora_sendbuffer[LORA_RETRANSNUSSION_BT+1],&DMA_RXBuf_BT[0],BT_NUM*2+1); //基站ID -//// memcpy(&lora_sendbuffer[LORA_RETRANSNUSSION_BT+BT_NUM*2+2],&DMA_RXBuf_BT[1+BT_NUM*2],BT_NUM*2);//基站距离 -//// lora_sendbuffer[MSG_LENGTH] = LORA_RETRANSNUSSION_BT+4*BT_NUM+2; -////// } -////// if(lora_sendbuffer[LORA_RETRANSNUSSION_BT]==0x2D) -////// { -//// checksum = Checksum_u16(lora_sendbuffer,4*BT_NUM+4*report_ancnum+BT_ANCID_IDX+3); -//// memcpy(&lora_sendbuffer[LORA_RETRANSNUSSION_BT+BT_NUM*4+2],&checksum,2); -// BT_SEND_flag=BT_ANCID_IDX+report_ancnum*4+BT_NUM*4+5; -// Radio.Send(lora_sendbuffer,BT_SEND_flag); -//// LORA_POLL_COUNT++; -////// LORA_3029_SINGLE_SEND(lora_sendbuffer,ANCID_IDX+report_ancnum*4+BT_NUM*4+4,0); -////// } -////// else -////// { -////// checksum = Checksum_u16(lora_sendbuffer,4*report_ancnum+ANCID_IDX); -////// memcpy(&lora_sendbuffer[ANCID_IDX+report_ancnum*4],&checksum,2); -////// Radio.Send(lora_sendbuffer,ANCID_IDX+report_ancnum*4+BT_NUM*4+2); -////// } - - #ifdef _USE_BAR GetPressAndHeight(); intheight = Height*100; @@ -424,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); } @@ -471,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; @@ -488,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("网关下发配置写入完成,重启"); @@ -504,7 +407,9 @@ } else { + Radio.Rx( 50 ); + send_flag=1; //LORA_LED_OFF; } } @@ -538,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; @@ -570,8 +477,8 @@ switch(RX_Buffer[PWTAG_RW_FLAG_IDX]) { case WGRSP_RWTAG_NONE: -// REV_WG_pack++; -// wg_report_freq = RX_Buffer[POLL_FREQ_IDX]+400; + REV_WG_pack++;//此处刚放开 + wg_report_freq = RX_Buffer[POLL_FREQ_IDX]+400;//此处刚放开未测试 // memcpy(&rec_delaytime,&RX_Buffer[NEXTPOLL_TIME_IDX],2); // if(report_ancnum<2) @@ -627,9 +534,15 @@ 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; + flag_writepara_needreset = 1; no_rx_flag = 1; } @@ -657,7 +570,8 @@ } } - } + } +LOG_INFO(TRACE_MODULE_APP, "进入回复2\r\n"); if(!no_rx_flag) { if(lora_jianting_flag&&LoraUp_flag==0) @@ -681,6 +595,7 @@ void OnRxTimeout( void ) { Radio.Standby(); + if(lora_jianting_flag) { SwitchLoraSettings(UWB_CHANNEL_FRQ+group_id,UWB_CHANNEL_SF,0); -- Gitblit v1.9.3