From fbff960e30c1771d1b16ad03eb2cc1a3ec3e58e4 Mon Sep 17 00:00:00 2001
From: WXK <287788329@qq.com>
Date: 星期四, 24 七月 2025 11:21:19 +0800
Subject: [PATCH] 1.0
---
Src/main.c | 555 ++++++++++++++++++++++++++++++-------------------------
1 files changed, 300 insertions(+), 255 deletions(-)
diff --git a/Src/main.c b/Src/main.c
index ac7e52a..2e44558 100644
--- a/Src/main.c
+++ b/Src/main.c
@@ -31,7 +31,7 @@
#define NSH1 0x0001
#define GP 0x0002
-//#define DEBUG_MODE
+#define DEBUG_MODE
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
@@ -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 */
@@ -112,9 +115,15 @@
uint16_t hardware_version,hardware_pici,hardware_type;
u16 current_time;
uint8_t state5v;
+uint8_t uart_time;
+uint8_t uart_init_flag;
void IdleTask(void)
{
-
+ if(uart_init_flag)
+ {
+ UsartInit();
+ uart_init_flag=0;
+ }
UART_CheckReceive();
UART_CheckSend();
@@ -130,84 +139,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;
- }
- //motor_state=2;
- 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;
- }
-}
- bat_percent=Get_Battary();
- if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))
- {
- nomove_count = 0;
- if(state5v==0)
- {
- 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;
-// }
-}
+// 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;
@@ -265,12 +221,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;
@@ -281,9 +245,9 @@
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] = (2<<8)|53;
+ g_com_map[VERSION] = (1<<8)|0;
-// g_com_map[DEV_ID]=0x7;
+// g_com_map[DEV_ID]=0x0011;
#ifdef DEBUG_MODE
// g_com_map[DEV_ROLE]=1;
// g_com_map[DEV_ID]=0x4009;
@@ -298,18 +262,13 @@
// g_com_map[IMU_ENABLE]=0;
// 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;
@@ -318,14 +277,25 @@
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]);
@@ -352,31 +322,60 @@
void HardWareTypeDiffConfig(void)
{
- 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;
- }
+// 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 */
/**
@@ -407,29 +406,48 @@
/* Initialize all configured peripherals */
MX_GPIO_Init();
- MX_LPTIM1_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();
+ dwt_configcontinuousframemode(124800);
+ dwt_writetxfctrl(13, 0);
+ while(1)
+ {
+ IdleTask();
+ }
+// 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();
}
- LIS3DH_Check();
+
// HAL_Delay(2000);
// mcu_sleep();
@@ -449,14 +467,14 @@
// {
// MODBUS_Poll();
// }
-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&&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;
g_start_send_flag = 0;
// GetPressAndTemp();
@@ -468,27 +486,32 @@
// }
// LED_TR_BLINK;
__disable_irq();
- if(bat_percent>15)
- { LED_TB_ON;
+// 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(waitusart_timer>0)
+// {
+// waitusart_timer--;
+// }
}else{
IdleTask();
}
-
// HAL_Delay(100);
// Get_Battary();
@@ -517,10 +540,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;
@@ -603,6 +628,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 */
}
@@ -821,36 +875,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;
@@ -871,29 +902,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);
}
@@ -913,7 +947,7 @@
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
- LIS3DH_Check();
+
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN1);
@@ -927,84 +961,95 @@
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;
+uint8_t uart_time;
+uint8_t uart_init_flag;
void HAL_LPTIM_CompareMatchCallback(LPTIM_HandleTypeDef *hlptim)
{
static uint8_t i=0;
SystemClock_Config();
g_start_send_flag=1;
+ 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;
- }
-
- }
+ uart_time++;
+ if(uart_time>60)
+ {
+ uart_init_flag=1;
+ uart_time=0;
+ }
+// 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+=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>=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