| | |
| | | SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader |
| | | } |
| | | Radio.Standby(); |
| | | Radio.Rx( 100 ); |
| | | // LED_TB_OFF; |
| | | if(LoraUp_flag) |
| | | { |
| | | huifushengjibao_flag=1; |
| | | Radio.Rx( 500 ); |
| | | } |
| | | else |
| | | { |
| | | Radio.Rx( 100 ); |
| | | } |
| | | } |
| | | extern LPTIM_HandleTypeDef hlptim1; |
| | | uint16_t current_time,start_time,end_time; |
| | |
| | | // Delay_Ms(100); |
| | | } |
| | | extern uint8_t report_ancnum; |
| | | static uint16_t delaytime = 771; |
| | | static uint16_t delaytime = 1200; |
| | | static uint16_t source_id; |
| | | uint8_t rec_index; |
| | | uint16_t rec_value,rec_delaytime,rx_count; |
| | |
| | | current_count = HAL_LPTIM_ReadCounter(&hlptim1); |
| | | wg_report_freq = RX_Buffer[POLL_FREQ_IDX]+400; |
| | | memcpy(&rec_delaytime,&RX_Buffer[NEXTPOLL_TIME_IDX],2); |
| | | |
| | | if(report_ancnum<2) |
| | | { |
| | | datalen_offset = report_ancnum*85; |
| | |
| | | { |
| | | case 0xaa: //升级下发 |
| | | memcpy(&rec_wenjian_daxiao,&RX_Buffer[WRITEPARA_VALUE_IDX],2);//文件大小 |
| | | if(rec_wenjian_daxiao>0XAC00||rec_wenjian_daxiao==0) |
| | | if(rec_wenjian_daxiao>APP_SIZE||rec_wenjian_daxiao==0) |
| | | {}//文件过大,超出范围 |
| | | else |
| | | { |
| | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | if(!no_rx_flag) |
| | | } |
| | | if(!no_rx_flag&&LoraUp_flag==0) |
| | | { |
| | | SwitchLoraSettings(UWB_CHANNEL_FRQ+g_com_map[GROUP_ID],UWB_CHANNEL_SF,0); |
| | | Radio.Rx(0); |
| | |
| | | // Radio.SetRxDutyCycle(RxDutyCycle_RX_time,RxDutyCycle_SLEEP_time); |
| | | |
| | | } |
| | | uint32_t IAP_JumpTo(uint32_t ApplicationAddress) |
| | | { |
| | | uint32_t JumpAddress; |
| | | |
| | | if (((*(uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000) |
| | | { |
| | | //HAL_NVIC_DisableIRQ(EXTI0_1_IRQn); |
| | | // __disable_irq(); |
| | | JumpAddress = *(uint32_t*) (ApplicationAddress + 4); |
| | | |
| | | __set_MSP(*(uint32_t*) ApplicationAddress); //Set MSP |
| | | |
| | | (*((void(*)(void))JumpAddress))(); |
| | | |
| | | return 1; |
| | | } |
| | | |
| | | return 0; |
| | | } |
| | | uint8_t send_lora_data[250]; |
| | | //extern uint8_t lora_recbuffer[255]; |
| | | uint8_t muqiandeshengjibao; |
| | |
| | | } |
| | | // while(1); |
| | | if(lora_up_rec_flag) |
| | | { |
| | | { uint16_t result12; |
| | | HAL_IWDG_Refresh(&hiwdg); |
| | | crc16=Cal_CRC16(RX_Buffer,DATA_IDX+ONE_BAG_DAXIAO); |
| | | __disable_irq(); |
| | | if(muqiandeshengjibao==RX_Buffer[MUQIAN_BAG]&&!memcmp(&crc16,&RX_Buffer[DATA_IDX+ONE_BAG_DAXIAO],2)&&!memcmp(&dev_id,&RX_Buffer[DEST_ID_IDX],2)&& !memcmp(&wangguan_up_id,&RX_Buffer[SOURCE_ID_IDX],2)) |
| | | { |
| | | memcpy(Zhongjian_data,&RX_Buffer[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 |
| | | FLASH_Write(APP2_ADRESS+ONE_BAG_DAXIAO*RX_Buffer[MUQIAN_BAG],(uint8_t*)Zhongjian_data,ONE_BAG_DAXIAO); |
| | | |
| | | result12=FLASH_Write(APP2_ADRESS+ONE_BAG_DAXIAO*RX_Buffer[MUQIAN_BAG],(uint8_t*)Zhongjian_data,ONE_BAG_DAXIAO); |
| | | while(result12==0) |
| | | { |
| | | result12=FLASH_Write(APP2_ADRESS+ONE_BAG_DAXIAO*RX_Buffer[MUQIAN_BAG],(uint8_t*)Zhongjian_data,ONE_BAG_DAXIAO); |
| | | delay_ms(10); |
| | | } |
| | | if(result12) |
| | | muqiandeshengjibao++; |
| | | } |
| | | __enable_irq(); |
| | | } |
| | | else |
| | | { |
| | |
| | | if(muqiandeshengjibao==final_bag_num) |
| | | { |
| | | uint16_t tmp11 ,result11; |
| | | tmp11=0XBB; |
| | | tmp11=0XCC; |
| | | result11 = FLASH_Prepare(APP_1OR2_ADRESS, PAGE_SIZE); |
| | | if(result11) |
| | | result11 = FLASH_Write(APP_1OR2_ADRESS, (const uint8_t*)&tmp11, 2); |
| | | result11 = FLASH_Write(APP_1OR2_ADRESS, (const uint8_t*)&tmp11, 2); |
| | | __disable_irq(); |
| | | Delay_Ms(1500); |
| | | HAL_NVIC_SystemReset(); |
| | | } |