From 655ca318efcdf71554da38ab30ccdaa53b8c6075 Mon Sep 17 00:00:00 2001 From: WXK <287788329@qq.com> Date: 星期一, 25 三月 2024 17:54:17 +0800 Subject: [PATCH] V1.13,修复lora收到升级命令后发射回应包,如果回应包没有触发txdone无法触发标志位,重复发射5次后,会清零,不会重启的BUG --- Src/radio/Lora.c | 52 ++++++++++++++++++++++++++++++---------------------- 1 files changed, 30 insertions(+), 22 deletions(-) diff --git a/Src/radio/Lora.c b/Src/radio/Lora.c index ffea0f3..d6a7357 100644 --- a/Src/radio/Lora.c +++ b/Src/radio/Lora.c @@ -360,6 +360,7 @@ uint16_t testflag; uint32_t Zhongjian_data[60]; uint16_t app1_or_app2; +extern IWDG_HandleTypeDef hiwdg; void LoraUp_Poll() { uint16_t result ; uint16_t crc16; @@ -368,19 +369,7 @@ if(rec_wenjian_daxiao>0XAC00) {}//文件过大,超出范围 else - { - __disable_irq(); - while(1) - { - FLASH_Prepare(APP2_ADRESS, APP_SIZE); - delay_ms(500); - if(testflag==0) - {break;} - } -// FLASH_Write(APP2_ADRESS, (const uint8_t*)&tmp111, 2); - __enable_irq(); - FLASH_Read(APP_1OR2_ADRESS,(uint8_t*)&app1_or_app2,2); - final_bag_num=(rec_wenjian_daxiao/220)+1;//计算一共要请求多少包 + { memcpy(&wangguan_up_id,&rxbuffer[SOURCE_ID_IDX],2);//网关ID 占用2个字节 send_lora_data[MSG_TYPE_IDX]=LORA_MSGTYPE_UPDATE_CONFIRM; memcpy(&send_lora_data[SOURCE_ID_IDX],&dev_id,2);//网关ID 占用2个字节 @@ -392,7 +381,20 @@ LoraUp_flag=1; Radio.Send(send_lora_data,8);//基站发送升级确认回复 Delay_Ms(1000); - SwitchLoraSettings(LORA_UPCHANNEL_FRQ,7,22); + SwitchLoraSettings(LORA_UPCHANNEL_FRQ,LORA_UPCHANNEL_SF,22); //切换lora升级频点 + delay_ms(200); + __disable_irq(); +// FLASH_Read(APP_1OR2_ADRESS,(uint8_t*)&app1_or_app2,2); + final_bag_num=(rec_wenjian_daxiao/220)+1;//计算一共要请求多少包 + while(1) + { + FLASH_Prepare(APP2_ADRESS, APP_SIZE); + delay_ms(500); + if(testflag==0) + {break;} + } +// FLASH_Write(APP2_ADRESS, (const uint8_t*)&tmp111, 2); + __enable_irq(); while(1) { if(huifushengjibao_flag==1) @@ -428,13 +430,14 @@ // while(1); if(lora_up_rec_flag) { + HAL_IWDG_Refresh(&hiwdg); crc16=Cal_CRC16(rxbuffer,DATA_IDX+ONE_BAG_DAXIAO); if(muqiandeshengjibao==rxbuffer[MUQIAN_BAG]&&!memcmp(&crc16,&rxbuffer[DATA_IDX+ONE_BAG_DAXIAO],2)&&!memcmp(&dev_id,&rxbuffer[DEST_ID_IDX],2)&& !memcmp(&wangguan_up_id,&rxbuffer[SOURCE_ID_IDX],2)) { memcpy(Zhongjian_data,&rxbuffer[DATA_IDX],ONE_BAG_DAXIAO); - if(app1_or_app2==1) - FLASH_Write(APP1_ADRESS+ONE_BAG_DAXIAO*rxbuffer[MUQIAN_BAG],(uint8_t*)Zhongjian_data,ONE_BAG_DAXIAO); - else +// if(app1_or_app2==1) +// FLASH_Write(APP1_ADRESS+ONE_BAG_DAXIAO*rxbuffer[MUQIAN_BAG],(uint8_t*)Zhongjian_data,ONE_BAG_DAXIAO); +// else FLASH_Write(APP2_ADRESS+ONE_BAG_DAXIAO*rxbuffer[MUQIAN_BAG],(uint8_t*)Zhongjian_data,ONE_BAG_DAXIAO); muqiandeshengjibao++; @@ -442,22 +445,25 @@ } else { + HAL_IWDG_Refresh(&hiwdg); huifushengjibaoerror_num++; if(huifushengjibaoerror_num>=20) { huifushengjibaoerror_num=0; - muqiandeshengjibao=0; + muqiandeshengjibao=0; + Delay_Ms(500); + HAL_NVIC_SystemReset(); break; } } if(muqiandeshengjibao==final_bag_num) { uint16_t tmp11 ,result11; - tmp11=!app1_or_app2; - result11 = FLASH_Prepare(APP_1OR2_ADRESS, 2); + tmp11=0XBB; + result11 = FLASH_Prepare(APP_1OR2_ADRESS, PAGE_SIZE); if(result11) result11 = FLASH_Write(APP_1OR2_ADRESS, (const uint8_t*)&tmp11, 2); - Delay_Ms(500); + Delay_Ms(1500); HAL_NVIC_SystemReset(); } } @@ -470,7 +476,9 @@ huifushengjibaoerror_num++; if(huifushengjibaoerror_num>=5) { - huifushengjibaoerror_num=0; + huifushengjibaoerror_num=0; + Delay_Ms(500); + HAL_NVIC_SystemReset(); break; } } -- Gitblit v1.9.3