| | |
| | | {}//文件过大,超出范围 |
| | | 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个字节 |
| | |
| | | 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) |
| | |
| | | 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++; |
| | |
| | | { |
| | | huifushengjibaoerror_num=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(); |
| | | } |
| | | } |