| | |
| | | LED_LG_OFF; |
| | | // } |
| | | } |
| | | if(g_com_map[CNT_UPDATE]==1) |
| | | { |
| | | uint32_t result = 0; |
| | | uint16_t tmp = 0xAAAA; |
| | | __disable_irq(); |
| | | result = FLASH_Prepare(0x8004A38, 128); |
| | | if(result) |
| | | result = FLASH_Write(0x8004A38, (const uint8_t*)&tmp, 2); |
| | | __enable_irq(); |
| | | printf("进入升级模式\r\n"); |
| | | g_com_map[CNT_UPDATE]=0; |
| | | save_com_map_to_flash(); |
| | | delay_ms(100); |
| | | // STMFLASH_Write_NoCheck(0x8004A38,0xAAAA); |
| | | // Delay_ms(100); |
| | | SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader |
| | | } |
| | | if(g_com_map[CNT_REBOOT]==1) |
| | | { |
| | | g_com_map[CNT_REBOOT]=0; |
| | | g_com_map[MAP_SIGN_INDEX]=0; |
| | | save_com_map_to_flash(); |
| | | delay_ms(100); |
| | | SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader |
| | | } |
| | | if(g_com_map[CNT_RESTART]==1) |
| | | { |
| | | g_com_map[CNT_RESTART]=0; |
| | | save_com_map_to_flash(); |
| | | delay_ms(100); |
| | | SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader |
| | | } |
| | | if(g_com_map[MAP_SIGN_INDEX]!=0x55AA||g_com_map[COM_INTERVAL]==0) |
| | | { |
| | | SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader |
| | |
| | | // { |
| | | // lpcount+=LPTIMER_1S_COUNT; |
| | | // } |
| | | lpcount = last_lpcount+g_com_map[COM_INTERVAL]*32.768; |
| | | lpcount = last_lpcount+32768/tag_frequency; |
| | | while(lpcount>LPTIMER_1S_COUNT) |
| | | { |
| | | lpcount-=LPTIMER_1S_COUNT; |
| | |
| | | hardware_pici = STMFLASH_ReadHalfWord(FLASH_HARDWARE_VERSION_MAP+2); |
| | | hardware_type = STMFLASH_ReadHalfWord(FLASH_HARDWARE_VERSION_MAP+4); |
| | | //deca_sleep(1000); |
| | | g_com_map[VERSION] = (1<<8)|43; |
| | | g_com_map[VERSION] = (1<<8)|45; |
| | | |
| | | #ifdef DEBUG_MODE |
| | | // g_com_map[GROUP_ID]=21; |
| | | // g_com_map[DEV_ID]=4; |
| | | // g_com_map[COM_INTERVAL]=100; |
| | | // g_com_map[MAX_REPORT_ANC_NUM]=1; |
| | | // g_com_map[NOMOVESLEEP_TIME]=10; |
| | | #endif |
| | | |
| | | active_flag = g_com_map[ACTIVE_INDEX]; |
| | | module_power = g_com_map[POWER]; |
| | | imu_enable=g_com_map[IMU_ENABLE]; |
| | |
| | | imu_enable=1; |
| | | nomovesleeptime =10; |
| | | } |
| | | #ifdef DEBUG_MODE |
| | | // g_com_map[DEV_ROLE]=1; |
| | | // g_com_map[DEV_ID]=1; |
| | | // g_com_map[COM_INTERVAL]=100; |
| | | // g_com_map[MAX_REPORT_ANC_NUM]=1; |
| | | // g_com_map[NOMOVESLEEP_TIME]=10; |
| | | #endif |
| | | |
| | | // g_com_map[COM_INTERVAL]=100; |
| | | if(g_com_map[COM_INTERVAL]==0) |
| | | { |
| | |
| | | waitusart_timer--; |
| | | } |
| | | if(m_bEUARTTxEn==0&&waitusart_timer==0) |
| | | { |
| | | { |
| | | if(memcmp(g_com_map2,g_com_map,COM_MAP_SIZE)!=0) |
| | | { |
| | | SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; |
| | | } |
| | | #ifndef DEBUG_MODE |
| | | if(!HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin)) |
| | | HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); |
| | |
| | | } |
| | | extern uint8_t tx_near_msg[80],stationary_flag; |
| | | float key_keeptime; |
| | | extern float freqlost_count; |
| | | void HAL_LPTIM_CompareMatchCallback(LPTIM_HandleTypeDef *hlptim) |
| | | { |
| | | static uint8_t i=0; |
| | | i++; |
| | | g_start_send_flag=1; |
| | | current_slotnum++; |
| | | freqlost_count+=1/(float)tag_frequency; |
| | | if(freqlost_count>FREQ_LOST_TIME) |
| | | { |
| | | tag_frequency = NOTAG_FREQ; |
| | | } |
| | | SetNextPollTime(tyncpoll_time); |
| | | nomove_count+=(float)g_com_map[COM_INTERVAL]/1000; |
| | | nomove_count+=1/(float)tag_frequency; |
| | | if(motor_keeptime>0) |
| | | { |
| | | motor_keeptime-=(float)g_com_map[COM_INTERVAL]/1000; |
| | | nomove_count+=1/(float)tag_frequency; |
| | | } |
| | | if(!GET_USERKEY) |
| | | { |
| | | key_keeptime+=(float)g_com_map[COM_INTERVAL]/1000; |
| | | nomove_count+=1/(float)tag_frequency; |
| | | if(key_keeptime>=KEY_KEEPRESET_TIME) |
| | | { |
| | | g_com_map[ACTIVE_INDEX]=!active_flag; |