| | |
| | | #include "ADC.h" |
| | | |
| | | //#define DEBUG_MODE |
| | | /* |
| | | * rlv:éè£
è½½å¯åå¨çå¼ï¼åå¼èå´ä¸ºï¼0-0XFFF |
| | | * 彿°è°ç¨ä¸¾ä¾ï¼ |
| | | * IWDG_Config(IWDG_Prescaler_64 ,625); // IWDG 1s è¶
æ¶æº¢åº |
| | | * ï¼64/40ï¼*625 = 1s |
| | | */ |
| | | |
| | | void IWDG_Config(uint8_t prv ,uint16_t rlv) |
| | | { |
| | | // ä½¿è½ é¢åé¢å¯åå¨PRåéè£
è½½å¯åå¨RLRå¯å |
| | | IWDG_WriteAccessCmd( IWDG_WriteAccess_Enable ); |
| | | |
| | | // 设置é¢åé¢å¨å¼ |
| | | IWDG_SetPrescaler( prv ); |
| | | |
| | | // 设置éè£
è½½å¯åå¨å¼ |
| | | IWDG_SetReload( rlv ); |
| | | |
| | | // æéè£
è½½å¯åå¨ç弿¾å°è®¡æ°å¨ä¸ |
| | | IWDG_ReloadCounter(); |
| | | |
| | | // ä½¿è½ IWDG |
| | | IWDG_Enable(); |
| | | } |
| | | void IWDG_Feed(void) |
| | | { |
| | | IWDG_ReloadCounter(); |
| | | } |
| | | void Device_Init(void) |
| | | { |
| | | RCC_Configuration(); |
| | |
| | | Uart1_Init(); |
| | | Spi_Init(); |
| | | ADC_Configuration(); |
| | | |
| | | IWDG_Config(IWDG_Prescaler_128 ,4095); //10s |
| | | IWDG_Feed(); |
| | | GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); |
| | | } |
| | | u8 anchor_type; |
| | |
| | | checksum = Checksum_u16(&hbsend[2],12); |
| | | memcpy(&hbsend[14],&checksum,2); |
| | | } |
| | | u16 tyncpoll_time; |
| | | |
| | | uint16_t vel_factor,pos_factor; |
| | | u16 tyncpoll_time,dist_threshold,group_id; |
| | | u16 slottime,max_slotpos; |
| | | extern u8 module_power; |
| | | extern u16 total_slotnum; |
| | | void ComMapCheck(void) |
| | | { |
| | | |
| | | if(g_com_map[WAR_JDQ_TIME]>1000||g_com_map[WAR_JDQ_TIME]<0) |
| | | { |
| | | g_com_map[WAR_JDQ_TIME] = 1; |
| | | } |
| | | if(dist_threshold<300) |
| | | {dist_threshold = 300;} |
| | | if(dist_threshold>15000) |
| | | {dist_threshold = 15000;} |
| | | } |
| | | void Program_Init(void) |
| | | { float temp; |
| | | u16 temp2; |
| | |
| | | { |
| | | g_com_map[COM_INTERVAL]=100; |
| | | } |
| | | g_com_map[VERSION] = 0x0121; |
| | | |
| | | g_com_map[VERSION] = 0x0133; |
| | | dist_threshold = (g_com_map[SPEEDFILTER_THRES]*10)/(1000/g_com_map[COM_INTERVAL]); |
| | | ComMapCheck(); |
| | | g_com_map[SW_TYPE] = SW_FANGZHUANG; |
| | | dev_id = g_com_map[DEV_ID]; |
| | | group_id=g_com_map[GROUP_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]; |
| | | vel_factor=g_com_map[FILTER_COEFFICIENT]; |
| | | pos_factor=g_com_map[FILTER_COEFFICIENT]; |
| | | |
| | | if(module_power>67) |
| | | { |
| | | module_power=67; |
| | | } |
| | | |
| | | if(g_com_map[DEV_ROLE]) |
| | | { |
| | | printf("æ ç¾ID: %d .\r\n",dev_id); |
| | | printf("é讯é´é: %d ms.\r\n",g_com_map[COM_INTERVAL]); |
| | | printf("忬¡é讯åºç«æ°é: %d个.\r\n",g_com_map[MAX_REPORT_ANC_NUM]); |
| | | }else{ |
| | | |
| | | anchor_type = dev_id%g_com_map[MAX_REPORT_ANC_NUM]; |
| | | printf("åºç«ID: %x .\r\n",dev_id); |
| | | printf("åºç«ç±»å: %c .\r\n",anchor_type+0x41); |
| | | printf("忬¡é讯åºç«æ°é: %d个.\r\n",g_com_map[MAX_REPORT_ANC_NUM]); |
| | | } |
| | | // if(g_com_map[DEV_ROLE]) |
| | | // { |
| | | // printf("æ ç¾ID: %d .\r\n",dev_id); |
| | | // printf("é讯é´é: %d ms.\r\n",g_com_map[COM_INTERVAL]); |
| | | // printf("忬¡é讯åºç«æ°é: %d个.\r\n",g_com_map[MAX_REPORT_ANC_NUM]); |
| | | // }else{ |
| | | // |
| | | // anchor_type = dev_id%g_com_map[MAX_REPORT_ANC_NUM]; |
| | | // printf("åºç«ID: %x .\r\n",dev_id); |
| | | // printf("åºç«ç±»å: %c .\r\n",anchor_type+0x41); |
| | | // printf("忬¡é讯åºç«æ°é: %d个.\r\n",g_com_map[MAX_REPORT_ANC_NUM]); |
| | | // } |
| | | OUT485_DISABLE; |
| | | // 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]); |
| | |
| | | if(heartbeat_timer>1000) |
| | | { |
| | | heartbeat_timer=0; |
| | | if(g_com_map[HEARTBEAT]&&g_com_map[DEV_ROLE]==0) |
| | | if(g_com_map[HEARTBEAT]) |
| | | HeatBeat(); |
| | | } |
| | | if(flag_newsecond) |
| | | { |
| | | uint32_t temp23; |
| | | temp23 = dwt_read32bitreg(CHAN_CTRL_ID) ; |
| | | if(temp23!=0x4A480022) |
| | | { |
| | | temp23 = dwt_read32bitreg(CHAN_CTRL_ID) ; |
| | | if(temp23!=0x4A480022) |
| | | { |
| | | NVIC_SystemReset(); |
| | | } |
| | | } |
| | | // temp23 = dwt_read32bitreg(CHAN_CTRL_ID) ; |
| | | // if(temp23!=0x4A480022) |
| | | // { |
| | | // temp23 = dwt_read32bitreg(CHAN_CTRL_ID) ; |
| | | // if(temp23!=0x4A480022) |
| | | // { |
| | | // NVIC_SystemReset(); |
| | | // } |
| | | // } |
| | | flag_newsecond=0; |
| | | tagpos_binary=0; |
| | | memcpy(ancidlist_send,ancidlist_rec,ancidlist_num*2); |
| | |
| | | // Delay_ms(100); |
| | | SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软å¤ä½åå°bootloader |
| | | } |
| | | if(g_com_map[CNT_REBOOT]==1) |
| | | 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); |
| | | FactorySettings(); |
| | | |
| | | SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软å¤ä½åå°bootloader |
| | | } |
| | | if(g_com_map[CNT_RESTART]==1) |
| | |
| | | delay_ms(100); |
| | | SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软å¤ä½åå°bootloader |
| | | } |
| | | if(g_com_map[MAP_SIGN_INDEX]!=0x55AA||g_com_map[COM_INTERVAL]==0) |
| | | if(g_com_map[MAP_SIGN_INDEX]!=0x55AA||g_com_map[COM_INTERVAL]==0) |
| | | { |
| | | SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软å¤ä½åå°bootloader |
| | | } |
| | | |
| | | } |
| | | |
| | | int main(void) |
| | | { |
| | | |