From dd0d5d99bb183eeb6074f9bd4ddbff96104bd95d Mon Sep 17 00:00:00 2001
From: zhyinch <zhyinch@gmail.com>
Date: 星期日, 05 七月 2020 23:46:24 +0800
Subject: [PATCH] V1.11防撞9对5测试完成,发给华星

---
 Src/main.c |   70 +++++++++++++++++++++-------------
 1 files changed, 43 insertions(+), 27 deletions(-)

diff --git a/Src/main.c b/Src/main.c
index 7d067a9..1e06eb4 100644
--- a/Src/main.c
+++ b/Src/main.c
@@ -96,11 +96,11 @@
 	
 			UART_CheckReceive();
 		UART_CheckSend();
-	
-	if(huart1.Instance->ISR&USART_ISR_ORE)
-	{
-	SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader   
-	}
+
+//if(huart1.Instance->ISR&USART_ISR_FE)
+//	{
+//	SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader   
+//	}	
 //if(!HAL_GPIO_ReadPin(PWR_ON_GPIO_Port,PWR_ON_Pin))
 //{
 //	LED_TR_ON;
@@ -186,8 +186,7 @@
 void SetNextPollTime(u16 time)
 {
   int32_t lpcount,lptime,target_time;
-	
-	time=0;
+
 	if(current_slotnum>=total_slotnum)
 		current_slotnum-=total_slotnum;
 	
@@ -212,7 +211,7 @@
 	Usart1ParseDataCallback = UsartParseDataHandler;
 	parameter_init();
 	//deca_sleep(1000);
-	g_com_map[VERSION] = 0x010A;
+	g_com_map[VERSION] = 0x010b;
 #ifdef DEBUG_MODE
 //	g_com_map[DEV_ROLE]=1;
 //		g_com_map[DEV_ID]=1;
@@ -228,7 +227,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]/4)+4;
+	slottime=ceil((double)g_com_map[MAX_REPORT_ANC_NUM]*0.4)+2;
 	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;
@@ -294,7 +293,7 @@
   HAL_Init();
 
   /* USER CODE BEGIN Init */
-
+//每次生成CUBE后需要注意,串口初始化要在DMA初始化后面,手动调整顺序**************
   /* USER CODE END Init */
 
   /* Configure the system clock */
@@ -307,10 +306,10 @@
   /* Initialize all configured peripherals */
   MX_GPIO_Init();
   MX_LPTIM1_Init();
+	 MX_DMA_Init();
   MX_USART1_UART_Init();
   MX_SPI1_Init();
   MX_ADC_Init();
-  MX_DMA_Init();
   /* USER CODE BEGIN 2 */
 	Program_Init();
 	LIS3DH_Data_Init();	
@@ -319,9 +318,12 @@
 	
 	dwt_configuresleep(DWT_PRESRV_SLEEP | DWT_CONFIG, DWT_WAKE_CS | DWT_WAKE_WK| DWT_SLP_EN);
 	dwt_entersleep();
-	waitusart_timer=1;
+	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();
+	}
 //	HAL_Delay(2000);
 //	mcu_sleep();
 	//LED0_BLINK;		
@@ -367,7 +369,8 @@
 		}
 			if(m_bEUARTTxEn==0&&waitusart_timer==0)
 			{	
-			//	HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);  
+				
+				HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);  
 			}
 		
  
@@ -573,7 +576,7 @@
 {
 
   /* USER CODE BEGIN USART1_Init 0 */
-
+ GPIO_InitTypeDef GPIO_InitStruct = {0};
   /* USER CODE END USART1_Init 0 */
 
   /* USER CODE BEGIN USART1_Init 1 */
@@ -588,21 +591,24 @@
   huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
   huart1.Init.OverSampling = UART_OVERSAMPLING_16;
   huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
-  huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
+  huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_RXOVERRUNDISABLE_INIT|UART_ADVFEATURE_DMADISABLEONERROR_INIT;
+  huart1.AdvancedInit.OverrunDisable = UART_ADVFEATURE_OVERRUN_DISABLE;
+  huart1.AdvancedInit.DMADisableonRxError = UART_ADVFEATURE_DMA_DISABLEONRXERROR;
   if (HAL_UART_Init(&huart1) != HAL_OK)
   {
     Error_Handler();
   }
   /* USER CODE BEGIN USART1_Init 2 */
-	
+	    GPIO_InitStruct.Pin = GPIO_PIN_10;
+    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+    GPIO_InitStruct.Pull = GPIO_PULLUP;
+    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
+    GPIO_InitStruct.Alternate = GPIO_AF4_USART1;
+    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
 //  if(HAL_UART_Receive_IT(&huart1, (uint8_t *)aRxBuffer, 1) != HAL_OK)
 //  {
 //    Error_Handler();
 //  }
-	 if(HAL_UART_Receive_DMA(&huart1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE))
-	{
-	 Error_Handler();
-	}
 	Usart1InitVariables();
   /* USER CODE END USART1_Init 2 */
 
@@ -640,16 +646,16 @@
   __HAL_RCC_GPIOB_CLK_ENABLE();
 
   /*Configure GPIO pin Output Level */
-  HAL_GPIO_WritePin(GPIOA, DW_CTRL_Pin|SCL_Pin|SDA_Pin|SPI_CS_Pin, GPIO_PIN_SET);
+  HAL_GPIO_WritePin(GPIOA, SCL_Pin|SDA_Pin|SPI_CS_Pin, GPIO_PIN_SET);
 
   /*Configure GPIO pin Output Level */
-  HAL_GPIO_WritePin(GPIOB, MOTOR_Pin, GPIO_PIN_SET);
+  HAL_GPIO_WritePin(GPIOB, BAT_MEAS_GND_Pin|MOTOR_Pin, GPIO_PIN_SET);
 
   /*Configure GPIO pin Output Level */
-  HAL_GPIO_WritePin(GPIOB, BAT_MEAS_GND_Pin|LED1_G_Pin|LED1_R_Pin|LED2_R_Pin, GPIO_PIN_RESET);
+  HAL_GPIO_WritePin(GPIOB, LED1_G_Pin|LED1_R_Pin|LED2_R_Pin, GPIO_PIN_RESET);
 
   /*Configure GPIO pin Output Level */
-  HAL_GPIO_WritePin(GPIOA, DW_WKUP_Pin|LED2_G_Pin, GPIO_PIN_RESET);
+  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;
@@ -671,7 +677,7 @@
   HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
 
   /*Configure GPIO pin : SPI_CS_Pin */
-  GPIO_InitStruct.Pin = SPI_CS_Pin|GPIO_PIN_9;
+  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;
@@ -748,7 +754,7 @@
   HAL_PWR_EnterSTANDBYMode();	
 }
 extern float nomove_count;
-
+float key_keeptime;
 void HAL_LPTIM_CompareMatchCallback(LPTIM_HandleTypeDef *hlptim)
 {
 	static uint8_t i=0;
@@ -757,6 +763,16 @@
 	current_slotnum++;
 	SetNextPollTime(tyncpoll_time);
 	nomove_count+=(float)g_com_map[COM_INTERVAL]/1000;
+	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[NOMOVESLEEP_TIME]&&imu_enable)
 	{
 		mcu_sleep();

--
Gitblit v1.9.3