From 469830fa7fcdf4ee29ccbd5f7a5828609bc15d6a Mon Sep 17 00:00:00 2001 From: WXK <287788329@qq.com> Date: 星期二, 15 四月 2025 16:20:49 +0800 Subject: [PATCH] 1.1,修改了版本号 --- Src/main.c | 596 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 297 insertions(+), 299 deletions(-) diff --git a/Src/main.c b/Src/main.c index 3b67a45..9e00373 100644 --- a/Src/main.c +++ b/Src/main.c @@ -53,6 +53,8 @@ /* Private variables ---------------------------------------------------------*/ ADC_HandleTypeDef hadc; +IWDG_HandleTypeDef hiwdg; + LPTIM_HandleTypeDef hlptim1; SPI_HandleTypeDef hspi1; @@ -70,12 +72,13 @@ /* Private function prototypes -----------------------------------------------*/ void SystemClock_Config(void); static void MX_GPIO_Init(void); -static void MX_LPTIM1_Init(void); +static void MX_DMA_Init(void); static void MX_USART1_UART_Init(void); static void MX_SPI1_Init(void); static void MX_ADC_Init(void); -static void MX_DMA_Init(void); +static void MX_LPTIM1_Init(void); static void MX_TIM2_Init(void); +static void MX_IWDG_Init(void); /* USER CODE BEGIN PFP */ /* USER CODE END PFP */ @@ -101,7 +104,7 @@ } void UsartInit(void) { - waitusart_timer = tag_frequency*USART_KEEPWAKE_TIME; +// waitusart_timer = tag_frequency*USART_KEEPWAKE_TIME; MX_DMA_Init(); MX_USART1_UART_Init(); if(HAL_UART_Receive_DMA(&huart1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE)) @@ -130,82 +133,31 @@ // LED_TR_OFF; current_time=GetLPTime(); //motor_state=2; -if(g_com_map[MOTOR_ENABLE]) -{ - - if(motor_keeptime>0) - { - motor_state = 2; - }else{ - motor_state = 0; - } - switch(motor_state) - {case 0: - if(hardware_type==NSH1) - {MOTOR_OFF; - }else if(hardware_type==GP) - { - HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_3); - } - break; - case 1: - if(current_time<MOTOR_ONTIME) - { - if(hardware_type==NSH1) - {MOTOR_ON; - }else if(hardware_type==GP) - { - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3); - } - }else{ - if(hardware_type==NSH1) - {MOTOR_OFF; - }else if(hardware_type==GP) - { - HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_3); - } - } - break; - case 2: - if(hardware_type==NSH1) - {MOTOR_ON; - }else if(hardware_type==GP) - { - HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3); - } - break; - case 3: - if(hardware_type==NSH1) - {MOTOR_OFF; - }else if(hardware_type==GP) - { - HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_3); - } - break; - } -} - if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin)) - { - nomove_count = 0; - if(state5v==0) - { - state5v=1; - UsartInit(); - } - if(bat_percent>99) - { - LED_LR_OFF; - LED_LG_ON; - }else{ - LED_LR_ON; - LED_LG_OFF; - } - }else{ - state5v=0; - LED_LR_OFF; - LED_LG_OFF; -// } -} + +// bat_percent=Get_Battary(); +// if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin)) +// { +//// nomove_count = 0; +// if(state5v==0) +// { +// UWB_RXOFF(); +// state5v=1; +// UsartInit(); +// } +// if(HAL_GPIO_ReadPin(PWR_ON_GPIO_Port,PWR_ON_Pin)) +// { +// LED_LR_OFF; +// LED_LG_ON; +// }else{ +// LED_LR_ON; +// LED_LG_OFF; +// } +// }else{ +// state5v=0; +// LED_LR_OFF; +// LED_LG_OFF; +//// } +//} if(g_com_map[CNT_UPDATE]==1) { uint32_t result = 0; @@ -252,40 +204,9 @@ #define FIXSLOTPOS 4 u16 slotpos_intoatl; uint16_t bigslot_num; -uint8_t fix_slotpos =FIXSLOTPOS; -int32_t lpcount,lptime,target_time; -extern u16 tagslotpos; -void SetNextPollTime(u16 slotpos) //时间片逻辑:上来默认计算一个时间,时间同步之后,就近选择时间片。SetNextPollTime会调整下次发送 -{ -#ifdef FIXSLOT - fix_slotpos =FIXSLOTPOS; - //fix_slotpos = g_com_map[ALARM_DISTANCE1]; - slotpos = fix_slotpos; - tagslotpos = fix_slotpos; -#endif - while(current_slotnum>=tag_frequency) - { current_slotnum-=tag_frequency;} - slotpos_intoatl = current_slotnum*bigslot_num+slotpos; - if(current_slotnum==19) - {slotpos_intoatl = current_slotnum*bigslot_num+slotpos;} - target_time=(slotpos_intoatl*SLOTTIME_MS+100)*100; - - //if(target_time<90000) - { - lptime=target_time-offsettimeus+1200; - lpcount = lptime/LPTIMER_LSB; - if(lpcount>LPTIMER_1S_COUNT) - lpcount-=LPTIMER_1S_COUNT; - if(lpcount<0) - { - lpcount+=LPTIMER_1S_COUNT; - } - __HAL_LPTIM_COMPARE_SET(&hlptim1, lpcount); -} -} void ErrorConfig_Handler(void) { if(g_com_map[COM_INTERVAL]==0||g_com_map[COM_INTERVAL]>1000) @@ -294,12 +215,20 @@ } if(g_com_map[IMU_THRES]>10) {g_com_map[IMU_THRES]=2;} - if(g_com_map[POWER]>MAX_RFPOWER) - {g_com_map[POWER]=MAX_RFPOWER;} - if(g_com_map[POWER]<0) - {g_com_map[POWER]=0;} + if(g_com_map[POWER]>MAX_RFPOWER) + {g_com_map[POWER]=MAX_RFPOWER;} + if(g_com_map[POWER]<0) + {g_com_map[POWER]=0;} + if(g_com_map[STATIONARY_TIME]==0) + { + g_com_map[STATIONARY_TIME]=10; + } + } +uint8_t uwb_active_flag = 0; u8 active_flag=0; +u16 nomovesleep_time=0,interval; +extern uint8_t uwb_onflag; void Program_Init(void) { float temp; uint16_t temp2; @@ -310,13 +239,14 @@ 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] = 0x0219; -// g_com_map[DEV_ID]=0x7; + g_com_map[VERSION] = (1<<8)|1; + +// g_com_map[DEV_ID]=0x0011; #ifdef DEBUG_MODE // g_com_map[DEV_ROLE]=1; - g_com_map[DEV_ID]=0x4009; - g_com_map[ACTIVE_INDEX]=1; - g_com_map[COM_INTERVAL]=50; + // g_com_map[DEV_ID]=0x4009; +// g_com_map[ACTIVE_INDEX]=1; +// g_com_map[COM_INTERVAL]=50; // g_com_map[MAX_REPORT_ANC_NUM]=1; // g_com_map[NOMOVESLEEP_TIME]=10; // g_com_map[IMU_ENABLE]=0; @@ -324,35 +254,42 @@ #endif //g_com_map[NOMOVESLEEP_TIME]=10; // g_com_map[IMU_ENABLE]=0; -// g_com_map[COM_INTERVAL]=1000; +// g_com_map[COM_INTERVAL]=50; active_flag = g_com_map[ACTIVE_INDEX]; - if(active_flag==0) - { g_com_map[COM_INTERVAL]=1000; - g_com_map[IMU_ENABLE]=1; - g_com_map[NOMOVESLEEP_TIME]=10; - g_com_map[MOTOR_ENABLE]=0; - } +//g_com_map[HEIGHTOFFEST_INDEX]=g_com_map[MAX_REPORT_ANC_NUM]; + uwb_onflag=g_com_map[UWB_ONFLAG]; module_power = g_com_map[POWER]; imu_enable=g_com_map[IMU_ENABLE]; motor_enable=g_com_map[MOTOR_ENABLE]; - + uwb_active_flag = g_com_map[UWB_ACTIVE_FLAG_IDX]; group_id=g_com_map[GROUP_ID]; dev_id = g_com_map[DEV_ID]; //slottime=ceil((double)g_com_map[MAX_REPORT_ANC_NUM]*SLOT_SCALE)+3; - slottime = 5; + slottime = 5; max_slotpos=g_com_map[COM_INTERVAL]/slottime; tyncpoll_time=(g_com_map[DEV_ID]%max_slotpos)*slottime; slot_startcount=tyncpoll_time*1000/LPTIMER_LSB; lastpoll_time=tyncpoll_time; - tag_frequency = 1000/g_com_map[COM_INTERVAL]; + bigslot_num = TOTAL_SLOTNUM/tag_frequency; current_slotnum=1; current_time=GetLPTime(); + nomovesleep_time = g_com_map[NOMOVESLEEP_TIME]; + interval = g_com_map[COM_INTERVAL]; + if(active_flag==0) + { + interval=1000; + imu_enable=1; + nomovesleep_time = 10; + motor_enable=0; + } + tag_frequency = 1000/interval; if (HAL_LPTIM_TimeOut_Start_IT(&hlptim1, LPTIMER_1S_COUNT, slot_startcount) != HAL_OK) //system time is 1010ms 1 puls=30.518us { Error_Handler(); } + printf("固件版本:SS双路定位标签-防撞基站 V%d.%d. \r\n",g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff); //g_com_map[NOMOVESLEEP_TIME]=5; // printf("标签ID: %d .\r\n",dev_id); // printf("通讯间隔: %d ms.\r\n",g_com_map[COM_INTERVAL]); @@ -379,31 +316,60 @@ void HardWareTypeDiffConfig(void) { -GPIO_InitTypeDef GPIO_InitStruct = {0}; -//hardware_type=2; -if(hardware_type == 0) - hardware_type = 2; - switch(hardware_type) - { - case 1: - - HAL_GPIO_WritePin(GPIOB, MOTOR_Pin, GPIO_PIN_SET); - GPIO_InitStruct.Pin = MOTOR_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - break; - case 2: - MX_TIM2_Init(); - BarInit(); - break; - } +// GPIO_InitTypeDef GPIO_InitStruct = {0}; +// if(g_com_map[MOTORBEEPER_INDEX]!=1&&g_com_map[MOTORBEEPER_INDEX]!=2) +// { +// g_com_map[MOTORBEEPER_INDEX] = 2; +// } +// hardware_type = g_com_map[MOTORBEEPER_INDEX]; +// switch(hardware_type) +// { +// case 1: +// HAL_GPIO_WritePin(GPIOB, MOTOR_Pin, GPIO_PIN_SET); +// GPIO_InitStruct.Pin = MOTOR_Pin; +// GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; +// GPIO_InitStruct.Pull = GPIO_NOPULL; +// GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; +// HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); +// break; +// case 2: +// MX_TIM2_Init(); +// break; +// } +} +void DoubleClickProcess(void) +{ char temp[50]; + uint8_t len; +if(uwb_active_flag) +{ + uwb_active_flag = 0; + HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3); + HAL_Delay(3000); + HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_3); +}else{ + uwb_active_flag = 1; + HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3); + HAL_Delay(1000); + HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_3); +} +if(uwb_onflag) +{ +UWB_RXOFF(); +} +else +{ +UWB_RXON(); +} + g_com_map[UWB_ACTIVE_FLAG_IDX]= uwb_active_flag; +save_com_map_to_flash(); } void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart) { //SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader } + +uint8_t userkey_num; +extern u32 id,error_times; /* USER CODE END 0 */ /** @@ -434,29 +400,43 @@ /* Initialize all configured peripherals */ MX_GPIO_Init(); - MX_LPTIM1_Init(); - MX_DMA_Init(); + MX_DMA_Init(); MX_USART1_UART_Init(); MX_SPI1_Init(); MX_ADC_Init(); - //MX_TIM2_Init(); + MX_LPTIM1_Init(); + MX_TIM2_Init(); + MX_IWDG_Init(); /* USER CODE BEGIN 2 */ - LED_LG_ON; +// LED_LG_ON; Program_Init(); - LIS3DH_Data_Init(); - // BarInit(); +// Accelerometer_Init(); + // BarInit(); Dw1000_Init(); + id = dwt_readdevid() ; Dw1000_App_Init(); HardWareTypeDiffConfig(); - dwt_configuresleep(DWT_PRESRV_SLEEP | DWT_CONFIG, DWT_WAKE_CS | DWT_WAKE_WK| DWT_SLP_EN); - dwt_entersleep(); - waitusart_timer=tag_frequency*USART_KEEPWAKE_TIME;; +// dwt_configuresleep(DWT_PRESRV_SLEEP | DWT_CONFIG, DWT_WAKE_CS | DWT_WAKE_WK| DWT_SLP_EN); +// dwt_entersleep(); +// waitusart_timer=tag_frequency*USART_KEEPWAKE_TIME;; +// dwt_setinterrupt( DWT_INT_RFCG | (DWT_INT_ARFE | DWT_INT_RFSL | DWT_INT_SFDT | DWT_INT_RPHE | DWT_INT_RFCE | DWT_INT_RFTO | DWT_INT_RXPTO), 1); +// dwt_setrxtimeout(0);//设定接收超时时间,0位没有 +// dwt_rxenable(0); +// if(uwb_onflag) +// { +// UWB_RXON(); +// } +// else +// { +// UWB_RXOFF(); +// } DW_DISABLE; if(HAL_UART_Receive_DMA(&huart1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE)) { Error_Handler(); } - + + // HAL_Delay(2000); // mcu_sleep(); //LED0_BLINK; @@ -475,9 +455,15 @@ // { // MODBUS_Poll(); // } - if(g_start_send_flag&&active_flag) +//if(m_bEUARTTxEn==0&&(motor_state==0||motor_state==3)) +// { +//#ifndef DEBUG_MODE +// if(!HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin)) +// HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); +//#endif +// } + if(g_start_send_flag/*&&uwb_onflag*/) { static uint16_t blink_count=0; - SystemClock_Config(); g_start_send_flag = 0; // GetPressAndTemp(); // if(current_count>slot_startcount&¤t_count<slot_startcount+interval_count) @@ -487,36 +473,33 @@ // HAL_GPIO_WritePin(LED0_GPIO, GPIO_PIN_9, GPIO_PIN_RESET); // } // LED_TR_BLINK; - - bat_percent=Get_Battary(); - if(bat_percent>15) - { LED_TB_ON; + __disable_irq(); +// if(bat_percent>15) +// { +//// LED_TB_ON; +// Tag_App(); +//// LED_TB_OFF; +// } +// else +// { +// LED_TR_ON; Tag_App(); - LED_TB_OFF; - }else{ - LED_TR_ON; - Tag_App(); - LED_TR_OFF; - } +// HAL_IWDG_Refresh(&hiwdg); +// id = dwt_readdevid() ; +// IdleTask(); +// LED_TR_OFF; +// } + __enable_irq(); //LED0_BLINK; IdleTask(); - if(waitusart_timer>0) - { - waitusart_timer--; - } - if(m_bEUARTTxEn==0&&waitusart_timer==0&&(motor_state==0||motor_state==3)) - { -#ifndef DEBUG_MODE - if(!HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin)) - HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); -#endif - } - - +// if(waitusart_timer>0) +// { +// waitusart_timer--; +// } + }else{ IdleTask(); } - // HAL_Delay(100); // Get_Battary(); @@ -545,10 +528,12 @@ /** Initializes the RCC Oscillators according to the specified parameters * in the RCC_OscInitTypeDef structure. */ - RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_LSE; + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_LSI + |RCC_OSCILLATORTYPE_LSE; RCC_OscInitStruct.LSEState = RCC_LSE_ON; RCC_OscInitStruct.HSIState = RCC_HSI_ON; RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; + RCC_OscInitStruct.LSIState = RCC_LSI_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; RCC_OscInitStruct.PLL.PLLMUL = RCC_PLLMUL_4; @@ -631,6 +616,35 @@ /* USER CODE BEGIN ADC_Init 2 */ HAL_ADCEx_Calibration_Start(&hadc,ADC_SINGLE_ENDED); /* USER CODE END ADC_Init 2 */ + +} + +/** + * @brief IWDG Initialization Function + * @param None + * @retval None + */ +static void MX_IWDG_Init(void) +{ + + /* USER CODE BEGIN IWDG_Init 0 */ + + /* USER CODE END IWDG_Init 0 */ + + /* USER CODE BEGIN IWDG_Init 1 */ + + /* USER CODE END IWDG_Init 1 */ + hiwdg.Instance = IWDG; + hiwdg.Init.Prescaler = IWDG_PRESCALER_32; + hiwdg.Init.Window = 3699; + hiwdg.Init.Reload = 3699; + if (HAL_IWDG_Init(&hiwdg) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN IWDG_Init 2 */ + + /* USER CODE END IWDG_Init 2 */ } @@ -849,36 +863,13 @@ __HAL_RCC_GPIOB_CLK_ENABLE(); /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOA, SCL_Pin|SDA_Pin|SPI_CS_Pin, GPIO_PIN_SET); - - /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOB, BAT_MEAS_GND_Pin|PWR_CTL_Pin, GPIO_PIN_SET); /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOB, LED1_G_Pin|LED1_R_Pin|LED2_R_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(GPIOA, DW_WKUP_Pin|DW_CTRL_Pin|SPI_CS_Pin, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOA, DW_WKUP_Pin|DW_CTRL_Pin|LED2_G_Pin, GPIO_PIN_RESET); - - /*Configure GPIO pin : PA0 */ - GPIO_InitStruct.Pin = GPIO_PIN_0; - GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; - GPIO_InitStruct.Pull = GPIO_NOPULL; - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - - /*Configure GPIO pins : SCL_Pin SDA_Pin */ - GPIO_InitStruct.Pin = SCL_Pin|SDA_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - - /*Configure GPIO pin : SPI_CS_Pin */ - GPIO_InitStruct.Pin = SPI_CS_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; - HAL_GPIO_Init(SPI_CS_GPIO_Port, &GPIO_InitStruct); + HAL_GPIO_WritePin(GPIOB, SPI_RST_Pin|SPI_WAKEUP_Pin, GPIO_PIN_RESET); /*Configure GPIO pin : BAT_MEAS_GND_Pin */ GPIO_InitStruct.Pin = BAT_MEAS_GND_Pin; @@ -899,29 +890,32 @@ GPIO_InitStruct.Pull = GPIO_PULLDOWN; HAL_GPIO_Init(INPUT_5V_GPIO_Port, &GPIO_InitStruct); - /*Configure GPIO pins : LED1_G_Pin LED1_R_Pin LED2_R_Pin PWR_CTL_Pin */ - GPIO_InitStruct.Pin = LED1_G_Pin|LED1_R_Pin|LED2_R_Pin|PWR_CTL_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - - /*Configure GPIO pins : DW_WKUP_Pin DW_CTRL_Pin LED2_G_Pin */ - GPIO_InitStruct.Pin = DW_WKUP_Pin|DW_CTRL_Pin|LED2_G_Pin; + /*Configure GPIO pins : DW_WKUP_Pin DW_CTRL_Pin SPI_CS_Pin */ + GPIO_InitStruct.Pin = DW_WKUP_Pin|DW_CTRL_Pin|SPI_CS_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - /*Configure GPIO pin : PWR_ON_Pin */ - GPIO_InitStruct.Pin = PWR_ON_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - GPIO_InitStruct.Pull = GPIO_PULLUP; - HAL_GPIO_Init(PWR_ON_GPIO_Port, &GPIO_InitStruct); + /*Configure GPIO pin : PB6 */ + GPIO_InitStruct.Pin = GPIO_PIN_6; + GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + /*Configure GPIO pins : SPI_RST_Pin SPI_WAKEUP_Pin PWR_CTL_Pin */ + GPIO_InitStruct.Pin = SPI_RST_Pin|SPI_WAKEUP_Pin|PWR_CTL_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); /* EXTI interrupt init*/ HAL_NVIC_SetPriority(EXTI0_1_IRQn, 1, 0); HAL_NVIC_EnableIRQ(EXTI0_1_IRQn); + + HAL_NVIC_SetPriority(EXTI4_15_IRQn, 1, 0); + HAL_NVIC_EnableIRQ(EXTI4_15_IRQn); } @@ -941,6 +935,8 @@ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN1); /*Clear all related wakeup flags*/ @@ -953,85 +949,87 @@ extern u16 tagslotpos; extern uint8_t tx_near_msg[80],stationary_flag,gotosleep_flag; float key_keeptime; -extern float motor_ontime; +extern float motor_ontime,button_delay; void HAL_LPTIM_CompareMatchCallback(LPTIM_HandleTypeDef *hlptim) { static uint8_t i=0; - i++; - + SystemClock_Config(); g_start_send_flag=1; - current_slotnum++; - SetNextPollTime(tagslotpos); - nomove_count+=(float)g_com_map[COM_INTERVAL]/1000; - if(motor_keeptime>0) - { - motor_keeptime-=(float)g_com_map[COM_INTERVAL]/1000; - } - if(motor_keeptime<0) - {motor_keeptime = 0;} - if(active_flag==0) - { - if(!GET_USERKEY) - { - LED_LG_ON; - key_keeptime+=(float)g_com_map[COM_INTERVAL]/1000; - if(key_keeptime>3) - { - u8 i=250,keystate=1; - while(i--) - { - if(i%10==0) - { - LED_LG_BLINK; - } - if(GET_USERKEY) - {keystate = 0;} - if(keystate==0&&!GET_USERKEY) - { - parameter_init(); - g_com_map[ACTIVE_INDEX] = 1; - save_com_map_to_flash(); - delay_ms(100); - SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader - } - delay_ms(10); - } - } - }else{ - LED_LG_OFF; - key_keeptime=0; - } - - } + userkey_num=0; +// current_slotnum++; +// SetNextPollTime(tagslotpos); + if(button_delay<1) + button_delay+=1/(float)tag_frequency; + nomove_count+=1/(float)tag_frequency; +// if(motor_keeptime>0) +// { +// motor_keeptime-=1/(float)tag_frequency; +// } +// if(motor_keeptime<0) +// {motor_keeptime = 0;} +// if(active_flag==0) +// { +// if(!GET_USERKEY) +// { +//// LED_LG_ON; +// key_keeptime+=1/(float)tag_frequency; +// if(key_keeptime>3) +// { +// u8 i=250,keystate=1; +// while(i--) +// { +// if(i%10==0) +// { +//// LED_LG_BLINK; +// } +// if(GET_USERKEY) +// {keystate = 0;} +// if(keystate==0&&!GET_USERKEY) +// { +// parameter_init(); +// g_com_map[ACTIVE_INDEX] = 1; +// save_com_map_to_flash(); +// delay_ms(100); +// SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader +// } +// delay_ms(10); +// } +// } +// }else{ +//// LED_LG_OFF; +// key_keeptime=0; +// } +// +// } - if(!GET_USERKEY) - { - key_keeptime+=(float)g_com_map[COM_INTERVAL]/1000; - if(key_keeptime>=KEY_KEEPRESET_TIME) - { - SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; - } - }else{ - key_keeptime=0; - } - if(nomove_count>g_com_map[STATIONARY_TIME]) - { - stationary_flag = 1; - }else{ - stationary_flag = 0; - } -if(nomove_count>=g_com_map[NOMOVESLEEP_TIME]-1&&imu_enable) - { - gotosleep_flag=1; - }else{ - gotosleep_flag=0; - } -#ifndef DEBUG_MODE - if(nomove_count>g_com_map[NOMOVESLEEP_TIME]&&imu_enable) - { - mcu_sleep(); - } -#endif +// if(!GET_USERKEY) +// { +// key_keeptime+=1/(float)tag_frequency; +// if(key_keeptime>=KEY_KEEPRESET_TIME) +// { +// SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; +// } +// }else{ +// key_keeptime=0; +// } +// if(nomove_count>g_com_map[STATIONARY_TIME]) +// { +// stationary_flag = 1; +// }else{ +// stationary_flag = 0; +// } +//if(nomove_count>=nomovesleep_time-1&&imu_enable) +// { +// gotosleep_flag=1; +// }else{ +// gotosleep_flag=0; +// } +////#ifndef DEBUG_MODE +// if(nomove_count>g_com_map[NOMOVESLEEP_TIME]&&imu_enable) +// { +// mcu_sleep(); +// } +////#endif } /* USER CODE END 4 */ -- Gitblit v1.9.3