zhyinch
2020-07-05 dd0d5d99bb183eeb6074f9bd4ddbff96104bd95d
Src/main.c
@@ -97,10 +97,10 @@
         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;
@@ -187,7 +187,6 @@
{
  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();