From 20bdb4be1fc4676cceaf09456b5ff4b648f4a4a4 Mon Sep 17 00:00:00 2001
From: zhyinch <zhyinch@gmail.com>
Date: 星期四, 14 七月 2022 15:21:33 +0800
Subject: [PATCH] v2.49 新版子功能调通

---
 Src/main.c |  302 ++++++++++++++++++++++++++-----------------------
 1 files changed, 160 insertions(+), 142 deletions(-)

diff --git a/Src/main.c b/Src/main.c
index b41edc2..e106211 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 -----------------------------------------------------------*/
@@ -57,7 +57,7 @@
 
 SPI_HandleTypeDef hspi1;
 
-TIM_HandleTypeDef htim2;
+TIM_HandleTypeDef htim21;
 
 UART_HandleTypeDef huart1;
 DMA_HandleTypeDef hdma_usart1_rx;
@@ -75,7 +75,7 @@
 static void MX_SPI1_Init(void);
 static void MX_ADC_Init(void);
 static void MX_DMA_Init(void);
-static void MX_TIM2_Init(void);
+static void MX_TIM21_Init(void);
 /* USER CODE BEGIN PFP */
 
 /* USER CODE END PFP */
@@ -101,7 +101,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))
@@ -110,7 +110,7 @@
 	}
 }
 uint16_t hardware_version,hardware_pici,hardware_type;
-u16 current_time;
+u16 current_time,currentcount,beepcount;
 uint8_t state5v;
 void IdleTask(void)
 {
@@ -128,62 +128,63 @@
 //	LED_TB_OFF;
 //}else{
 //	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(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))
 	{
@@ -216,7 +217,7 @@
 	if(result)
 		result = FLASH_Write(0x8004A38, (const uint8_t*)&tmp, 2); 
 	__enable_irq();
-		printf("进入升级模式\r\n");
+		//printf("进入升级模式\r\n");
 	g_com_map[CNT_UPDATE]=0;
 	save_com_map_to_flash();
 	delay_ms(100);
@@ -280,14 +281,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] = 0x0225;
+	g_com_map[VERSION] = 2<<8|49;
     
 //	g_com_map[DEV_ID]=0x7;
 #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[COM_INTERVAL]=50;
 //	g_com_map[MAX_REPORT_ANC_NUM]=1;
 //	g_com_map[NOMOVESLEEP_TIME]=10;
 //			g_com_map[IMU_ENABLE]=0;
@@ -295,7 +296,7 @@
 #endif
 //g_com_map[NOMOVESLEEP_TIME]=10;
 //	g_com_map[IMU_ENABLE]=0;
-	 g_com_map[COM_INTERVAL]=50;
+//	 g_com_map[COM_INTERVAL]=50;
 	active_flag = g_com_map[ACTIVE_INDEX];
 	if(active_flag==0)
 	{   
@@ -312,7 +313,7 @@
 	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;
@@ -351,25 +352,27 @@
 
 void HardWareTypeDiffConfig(void)
 {
-GPIO_InitTypeDef GPIO_InitStruct = {0};
-//hardware_type=2;
-if(hardware_type == 0)
-    hardware_type = 1;
-	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(GPIOA, GPIO_PIN_11, GPIO_PIN_SET);
+//            GPIO_InitStruct.Pin = GPIO_PIN_11;
+//            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);
+//						//motor_keeptime = 10;
+//			break;
+//		case 2:
+//			MX_TIM2_Init();
+//			break;
+//		}
 }
 void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
 {
@@ -400,34 +403,34 @@
   SystemClock_Config();
 
   /* USER CODE BEGIN SysInit */
-	
+     MX_DMA_Init();
   /* USER CODE END SysInit */
 
   /* 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_DMA_Init();
+  MX_TIM21_Init();
   /* USER CODE BEGIN 2 */
 	LED_LG_ON;
 	Program_Init();
 	LIS3DH_Data_Init();	
-    BarInit();
+ // BarInit();
 	Dw1000_Init();
 	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;;
+//	waitusart_timer=tag_frequency*USART_KEEPWAKE_TIME;;
 	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();
 	//LED0_BLINK;		
@@ -446,7 +449,7 @@
 //		{
 //		MODBUS_Poll();
 //		}
-if(m_bEUARTTxEn==0&&waitusart_timer==0&&(motor_state==0||motor_state==3))
+if(m_bEUARTTxEn==0&&(motor_keeptime==0))
 			{	
 #ifndef DEBUG_MODE	
 				if(!HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))
@@ -464,6 +467,7 @@
 //		HAL_GPIO_WritePin(LED0_GPIO, GPIO_PIN_9, GPIO_PIN_RESET);
 //		}
 //		LED_TR_BLINK;
+			__disable_irq();
 		if(bat_percent>15)
 		{	LED_TB_ON;
 			Tag_App();
@@ -473,8 +477,9 @@
 			Tag_App();
 			LED_TR_OFF;		
 		}
+			__enable_irq();
 		//LED0_BLINK;		
-		IdleTask();	
+		IdleTask();			
 		if(waitusart_timer>0)
 		{
 			waitusart_timer--;
@@ -675,65 +680,61 @@
 }
 
 /**
-  * @brief TIM2 Initialization Function
+  * @brief TIM21 Initialization Function
   * @param None
   * @retval None
   */
-static void MX_TIM2_Init(void)
+static void MX_TIM21_Init(void)
 {
 
-  /* USER CODE BEGIN TIM2_Init 0 */
+  /* USER CODE BEGIN TIM21_Init 0 */
 
-  /* USER CODE END TIM2_Init 0 */
+  /* USER CODE END TIM21_Init 0 */
 
   TIM_ClockConfigTypeDef sClockSourceConfig = {0};
   TIM_MasterConfigTypeDef sMasterConfig = {0};
   TIM_OC_InitTypeDef sConfigOC = {0};
 
-  /* USER CODE BEGIN TIM2_Init 1 */
+  /* USER CODE BEGIN TIM21_Init 1 */
 
-  /* USER CODE END TIM2_Init 1 */
-  htim2.Instance = TIM2;
-  htim2.Init.Prescaler = 9;
-  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
-  htim2.Init.Period = 1171;
-  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
-  htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
-  if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
+  /* USER CODE END TIM21_Init 1 */
+  htim21.Instance = TIM21;
+  htim21.Init.Prescaler = 9;
+  htim21.Init.CounterMode = TIM_COUNTERMODE_UP;
+  htim21.Init.Period = 1171;
+  htim21.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
+  htim21.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
+  if (HAL_TIM_Base_Init(&htim21) != HAL_OK)
   {
     Error_Handler();
   }
   sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
-  if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
+  if (HAL_TIM_ConfigClockSource(&htim21, &sClockSourceConfig) != HAL_OK)
   {
     Error_Handler();
   }
-  if (HAL_TIM_PWM_Init(&htim2) != HAL_OK)
+  if (HAL_TIM_PWM_Init(&htim21) != HAL_OK)
   {
     Error_Handler();
   }
   sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
   sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
-  if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
+  if (HAL_TIMEx_MasterConfigSynchronization(&htim21, &sMasterConfig) != HAL_OK)
   {
     Error_Handler();
   }
   sConfigOC.OCMode = TIM_OCMODE_PWM1;
-  sConfigOC.Pulse = 599;
+  sConfigOC.Pulse = 585;
   sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
   sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
-  if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)
+  if (HAL_TIM_PWM_ConfigChannel(&htim21, &sConfigOC, TIM_CHANNEL_2) != HAL_OK)
   {
     Error_Handler();
   }
-  /* USER CODE BEGIN TIM2_Init 2 */
-//if(HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3) != HAL_OK)
-//  {
-//    /* Starting Error */
-//    Error_Handler();
-//  }
-  /* USER CODE END TIM2_Init 2 */
-  HAL_TIM_MspPostInit(&htim2);
+  /* USER CODE BEGIN TIM21_Init 2 */
+
+  /* USER CODE END TIM21_Init 2 */
+  HAL_TIM_MspPostInit(&htim21);
 
 }
 
@@ -816,10 +817,10 @@
   __HAL_RCC_GPIOB_CLK_ENABLE();
 
   /*Configure GPIO pin Output Level */
-  HAL_GPIO_WritePin(GPIOA, SCL_Pin|SDA_Pin|SPI_CS_Pin, GPIO_PIN_SET);
+  HAL_GPIO_WritePin(GPIOA, SPI_CS_Pin|SCL_Pin, GPIO_PIN_SET);
 
   /*Configure GPIO pin Output Level */
-  HAL_GPIO_WritePin(GPIOB, BAT_MEAS_GND_Pin|PWR_CTL_Pin, GPIO_PIN_SET);
+  HAL_GPIO_WritePin(GPIOB, BAT_MEAS_GND_Pin|SDA_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);
@@ -833,13 +834,6 @@
   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;
@@ -847,24 +841,18 @@
   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
   HAL_GPIO_Init(SPI_CS_GPIO_Port, &GPIO_InitStruct);
 
-  /*Configure GPIO pin : BAT_MEAS_GND_Pin */
-  GPIO_InitStruct.Pin = BAT_MEAS_GND_Pin;
+  /*Configure GPIO pins : BAT_MEAS_GND_Pin SDA_Pin */
+  GPIO_InitStruct.Pin = BAT_MEAS_GND_Pin|SDA_Pin;
   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
   GPIO_InitStruct.Pull = GPIO_NOPULL;
   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
-  HAL_GPIO_Init(BAT_MEAS_GND_GPIO_Port, &GPIO_InitStruct);
+  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
 
   /*Configure GPIO pin : USER_KEY_Pin */
   GPIO_InitStruct.Pin = USER_KEY_Pin;
   GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
   GPIO_InitStruct.Pull = GPIO_PULLUP;
   HAL_GPIO_Init(USER_KEY_GPIO_Port, &GPIO_InitStruct);
-
-  /*Configure GPIO pin : INPUT_5V_Pin */
-  GPIO_InitStruct.Pin = INPUT_5V_Pin;
-  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
-  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;
@@ -879,6 +867,19 @@
   GPIO_InitStruct.Pull = GPIO_NOPULL;
   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
   HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
+  /*Configure GPIO pin : SCL_Pin */
+  GPIO_InitStruct.Pin = SCL_Pin;
+  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
+  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+  HAL_GPIO_Init(SCL_GPIO_Port, &GPIO_InitStruct);
+
+  /*Configure GPIO pin : INPUT_5V_Pin */
+  GPIO_InitStruct.Pin = INPUT_5V_Pin;
+  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+  GPIO_InitStruct.Pull = GPIO_NOPULL;
+  HAL_GPIO_Init(INPUT_5V_GPIO_Port, &GPIO_InitStruct);
 
   /*Configure GPIO pin : PWR_ON_Pin */
   GPIO_InitStruct.Pin = PWR_ON_Pin;
@@ -899,6 +900,7 @@
 }
 void mcu_sleep(void)
 {
+	LIS3DH_Check();
 	HAL_LPTIM_DeInit(&hlptim1);
 	GPIO_InitTypeDef GPIO_InitStruct = {0};
 	GPIO_InitStruct.Pin = GPIO_PIN_All;
@@ -921,6 +923,27 @@
 extern uint8_t tx_near_msg[80],stationary_flag,gotosleep_flag;
 float key_keeptime;
 extern float motor_ontime;
+void BeeperTask(void)
+{	static u8 beeper_state = 0;
+    if(g_com_map[MOTOR_ENABLE])
+{
+    if(motor_keeptime>0)
+    {
+        motor_keeptime-=1/(float)tag_frequency;
+    }
+    	if(motor_keeptime>0&&beeper_state==0)
+	{	
+        
+        HAL_TIM_PWM_Start(&htim21, TIM_CHANNEL_2);
+        beeper_state = 1;
+	}
+    if(motor_keeptime<=0&&beeper_state==1)
+    {
+        beeper_state = 0;
+        motor_keeptime = 0;
+        HAL_TIM_PWM_Stop(&htim21, TIM_CHANNEL_2); 
+    }
+}}
 void HAL_LPTIM_CompareMatchCallback(LPTIM_HandleTypeDef *hlptim)
 {
 	static uint8_t i=0;
@@ -929,12 +952,7 @@
 //	current_slotnum++;
 //	SetNextPollTime(tagslotpos);
 	nomove_count+=1/(float)tag_frequency;
-	if(motor_keeptime>0)
-	{	
-	motor_keeptime-=1/(float)tag_frequency;
-	}
-    if(motor_keeptime<0)
-    {motor_keeptime = 0;}
+    BeeperTask();
 	if(active_flag==0)
 	{
 	if(!GET_USERKEY)

--
Gitblit v1.9.3