| | |
| | | RCC_Configuration(); |
| | | //SystemInit(); |
| | | NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x5000); |
| | | Nvic_Init(); |
| | | |
| | | // Systick_Init(); |
| | | TIM3_Int_Init(); |
| | | |
| | |
| | | Spi_Init(); |
| | | ADC_Configuration(); |
| | | Led_Init(); |
| | | Nvic_Init(); |
| | | GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); |
| | | } |
| | | u8 anchor_type; |
| | |
| | | {module_power=MAX_RFPOWER;} |
| | | if(module_power<0) |
| | | {module_power=0;} |
| | | if(g_com_map[MAX_REPORT_ANC_NUM]>10) |
| | | {g_com_map[MAX_REPORT_ANC_NUM]=10;} |
| | | if(g_com_map[MAX_REPORT_ANC_NUM]<1) |
| | | {g_com_map[MAX_REPORT_ANC_NUM]=1;} |
| | | // if(g_com_map[MAX_REPORT_ANC_NUM]>10) |
| | | // {g_com_map[MAX_REPORT_ANC_NUM]=10;} |
| | | // if(g_com_map[MAX_REPORT_ANC_NUM]<1) |
| | | // {g_com_map[MAX_REPORT_ANC_NUM]=1;} |
| | | if(g_com_map[IMU_THRES]>10) |
| | | {g_com_map[IMU_THRES]=10;} |
| | | if(g_com_map[IMU_THRES]<1) |
| | | {g_com_map[IMU_THRES]=1;} |
| | | } |
| | | u16 decid; |
| | | void Program_Init(void) |
| | | { float temp; |
| | | u16 temp2; |
| | |
| | | #endif |
| | | OUT485_ENABLE; |
| | | ComMapCheck(); |
| | | g_com_map[VERSION] = 0x0217; |
| | | g_com_map[VERSION] = (2<<8)|53; |
| | | dev_id = g_com_map[DEV_ID]; |
| | | slottime=ceil((double)g_com_map[MAX_REPORT_ANC_NUM]*SLOT_SCALE)+3; |
| | | max_slotpos=g_com_map[COM_INTERVAL]/slottime; |
| | | tyncpoll_time=(g_com_map[DEV_ID]%max_slotpos)*slottime; |
| | | module_power = g_com_map[POWER]; |
| | | total_slotnum = 1000/g_com_map[COM_INTERVAL]; |
| | | anchor_type = dev_id%3; |
| | | decid = (g_com_map[DEV_ID]/0x1000)*1000+((g_com_map[DEV_ID]%0x1000)/0x100)*100+((g_com_map[DEV_ID]%0x100)/0x10)*10+((g_com_map[DEV_ID]%0x10)); |
| | | anchor_type = decid%g_com_map[MAX_REPORT_ANC_NUM]; |
| | | |
| | | |
| | | |
| | |
| | | // printf("DEVICE PAIRID: %d .\r\n",g_com_map[PAIR_ID]); |
| | | // printf("DEVICE ALARM DISTANCE: 1.%d 2.%d 3.%d .\r\n",g_com_map[ALARM_DISTANCE1],g_com_map[ALARM_DISTANCE2],g_com_map[ALARM_DISTANCE3]); |
| | | |
| | | |
| | | memcpy(g_com_map2,g_com_map,COM_MAP_SIZE); |
| | | for(i=0;i<255;i++) |
| | | { |
| | | g_Tagdist[i]=0x1ffff; |
| | | IdleTask(); |
| | | } |
| | | |
| | | } |
| | | |
| | | /*! ------------------------------------------------------------------------------------------------------------------ |
| | |
| | | int32_t intheight; |
| | | void HeatBeat(void) |
| | | { u16 checksum; |
| | | GetPressAndHeight(); |
| | | intheight = Height*100;//+g_com_map[MAX_REPORT_ANC_NUM]; |
| | | // GetPressAndHeight(); |
| | | // intheight = Height*100;//+g_com_map[MAX_REPORT_ANC_NUM]; |
| | | if(synclost_count>5) |
| | | { |
| | | hbsend[6] = 0; |
| | | }else{ |
| | | hbsend[6] = 1; |
| | | } |
| | | if(intheight!=0) |
| | | intheight+=(int16_t)g_com_map[MAX_REPORT_ANC_NUM]; |
| | | memcpy(&hbsend[7],&intheight,4); |
| | | checksum = Checksum_u16(&hbsend[2],12); |
| | | memcpy(&hbsend[14],&checksum,2); |
| | | UART_PushFrame(hbsend,16); |
| | | } |
| | | u32 onesecondtimer; |
| | | void OneSecondTask(void) |
| | | { |
| | | TagListUpdate(); |
| | | TagDistClear(); |
| | | } |
| | | extern u8 g_start_sync_flag,usart_send_flag,anc_report_num; |
| | | u16 heartbeat_timer,poll_timer; |
| | | u16 heartbeat_timer=58,poll_timer; |
| | | int16_t sync_timer; |
| | | extern u8 flag_newsecond, tagpos_rec[50], tagpos_send[50],ancidlist_num; |
| | | uint32_t tagpos_binary; |
| | |
| | | { |
| | | |
| | | UART_CheckReceive(); |
| | | UART_CheckSend(); |
| | | // UART_CheckSend(); |
| | | UART2_CheckReceive(); |
| | | |
| | | if(heartbeat_timer>1000) |
| | | // if( memcmp(g_com_map2,g_com_map,COM_MAP_SIZE)!=0) |
| | | // { |
| | | // SendAnchorState(SM_MAPERROR); |
| | | // delay_ms(100); |
| | | // SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软å¤ä½åå°bootloader |
| | | // } |
| | | if(heartbeat_timer>60) |
| | | { |
| | | heartbeat_timer=0; |
| | | if(g_com_map[HEARTBEAT]&&g_com_map[DEV_ROLE]==0) |
| | | HeatBeat(); |
| | | } |
| | | if(time32_incr-onesecondtimer>=1000) |
| | | { |
| | | onesecondtimer = time32_incr; |
| | | OneSecondTask(); |
| | | } |
| | | // if(flag_newsecond) |
| | | // { |
| | |
| | | // tagpos_rec[i] = 0; |
| | | // } |
| | | // } |
| | | if(target_time>1000) |
| | | {target_time-=1000;} |
| | | #ifdef USART_INTEGRATE_OUTPUT |
| | | if(g_com_map[DEV_ROLE]==0&&usart_send_flag) |
| | | {u16 checksum; |
| | | usart_send_flag=0; |
| | | usart_send_anc[2] = 5;//æ£å¸¸æ¨¡å¼ |
| | | usart_send_anc[3] = anc_report_num*6+2;//æ£å¸¸æ¨¡å¼ |
| | | checksum = Checksum_u16(&usart_send_anc[2],anc_report_num*6+2); |
| | | memcpy(&usart_send_anc[4+anc_report_num*6],&checksum,2); |
| | | UART_PushFrame(usart_send_anc,6+anc_report_num*6); |
| | | anc_report_num=0; |
| | | } |
| | | #endif |
| | | if(g_com_map[CNT_UPDATE]==1) |
| | | { |
| | | uint32_t result = 0; |
| | | u16 tmp = 0xAAAA; |
| | | __disable_irq(); |
| | | result = FLASH_Prepare(0x8004A38, 2); |
| | | 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) |
| | | if(g_com_map[MAP_SIGN_INDEX]!=0x55AA) |
| | | { |
| | | SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软å¤ä½åå°bootloader |
| | | } |
| | | |
| | | } |
| | | extern u8 needanchorrx; |
| | | int main(void) |
| | | { |
| | | |
| | |
| | | Program_Init(); |
| | | Dw1000_Init(); |
| | | BarInit(); |
| | | delay_ms(10); |
| | | delay_ms(10); |
| | | Dw1000_App_Init(); |
| | | /* Loop forever initiating ranging exchanges. */ |
| | | RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); |
| | |
| | | usart_send[1]=0xAA; |
| | | usart_send_anc[0]=0x55; |
| | | usart_send_anc[1]=0xAA; |
| | | dwt_setrxtimeout(0);//è®¾å®æ¥æ¶è¶
æ¶æ¶é´ï¼0使²¡æè¶
æ¶æ¶é´ |
| | | dwt_rxenable(0);//æå¼æ¥æ¶ |
| | | //SendComMap(50, 0); |
| | | while(1) |
| | | { |
| | | g_start_sync_flag=0; |
| | | if(g_start_send_flag) |
| | | { |
| | | g_start_send_flag = 0; |
| | | Tag_App(); |
| | | } |
| | | IdleTask(); |
| | | if(g_com_map[DEV_ROLE]==0) |
| | | Anchor_App(); |
| | | |
| | | IdleTask(); |
| | | } |
| | | } |
| | | |