From 8dd2c20ddb32d065b877d66394e52a73c0376838 Mon Sep 17 00:00:00 2001 From: WXK <287788329@qq.com> Date: 星期二, 13 五月 2025 09:39:54 +0800 Subject: [PATCH] 1.72,加入拉高lora的cs脚,兼容带lora的免布线基站 --- Src/main.c | 269 +++++++++++++++++++++++++---------------------------- 1 files changed, 126 insertions(+), 143 deletions(-) diff --git a/Src/main.c b/Src/main.c index b337975..d3ecf83 100644 --- a/Src/main.c +++ b/Src/main.c @@ -55,11 +55,11 @@ /* Private variables ---------------------------------------------------------*/ ADC_HandleTypeDef hadc; +IWDG_HandleTypeDef hiwdg; + LPTIM_HandleTypeDef hlptim1; SPI_HandleTypeDef hspi1; - -TIM_HandleTypeDef htim2; UART_HandleTypeDef huart1; DMA_HandleTypeDef hdma_usart1_rx; @@ -77,7 +77,7 @@ static void MX_SPI1_Init(void); void MX_ADC_Init(void); static void MX_DMA_Init(void); -static void MX_TIM2_Init(void); +static void MX_IWDG_Init(void); /* USER CODE BEGIN PFP */ /* USER CODE END PFP */ @@ -110,8 +110,31 @@ Error_Handler(); } } +static void MX_DMA_DeInit(void) +{ + + /* DMA controller clock enable */ + __HAL_RCC_DMA1_CLK_DISABLE(); + + /* DMA interrupt init */ + /* DMA1_Channel2_3_IRQn interrupt configuration */ + // HAL_NVIC_SetPriority(DMA1_Channel2_3_IRQn, 1, 0); + HAL_NVIC_DisableIRQ(DMA1_Channel2_3_IRQn); + +} +void UsartDeInit(void) +{ + GPIO_InitTypeDef GPIO_InitStruct = {0}; + waitusart_timer = 0; + MX_DMA_DeInit(); + HAL_UART_DeInit(&huart1); + GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10; + GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); +} uint16_t hardware_version,hardware_pici,hardware_type; -uint8_t state5v; +uint8_t state5v = 1; float motor_keeptime; void IdleTask(void) {u16 current_time; @@ -140,7 +163,11 @@ LED_LG_OFF; } }else{ - state5v=0; + if(state5v==1) + { + state5v=0; + UsartDeInit(); + } LED_LR_OFF; LED_LG_OFF; // } @@ -183,30 +210,6 @@ __HAL_LPTIM_COMPARE_SET(&hlptim1, lpcount); } - -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(); - //BarInit(); - break; - } -} u8 active_flag,nomovesleeptime; void Program_Init(void) { float temp; @@ -218,7 +221,7 @@ 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] = (1<<8)|63; + g_com_map[VERSION] = (1<<8)|72; #ifdef DEBUG_MODE // g_com_map[GROUP_ID]=21; @@ -227,7 +230,7 @@ // g_com_map[MAX_REPORT_ANC_NUM]=1; // g_com_map[NOMOVESLEEP_TIME]=10; #endif - g_com_map[GROUP_ID]=2; +// g_com_map[GROUP_ID]=3; g_com_map[COM_INTERVAL] = 1000; active_flag = g_com_map[ACTIVE_INDEX]; module_power = g_com_map[POWER]; @@ -298,12 +301,6 @@ { //SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader } -/* USER CODE END 0 */ - -/** - * @brief The application entry point. - * @retval int - */ uint16_t temp2; float dw_vbat,last_vbat; uint8_t Get_Battary_UWB(void) @@ -337,6 +334,17 @@ } return last_value; } +void MX_ADC_DeInit(void) +{ + HAL_ADC_DeInit(&hadc); + HAL_ADCEx_DisableVREFINT(); +} +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ int main(void) { /* USER CODE BEGIN 1 */ @@ -362,27 +370,34 @@ /* 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_ADC_Init(); + MX_IWDG_Init(); /* USER CODE BEGIN 2 */ - LED_LG_ON; - Program_Init(); -// LIS3DH_Data_Init(); - Dw1000_Init(); - Dw1000_App_Init(); -// HardWareTypeDiffConfig(); - dwt_configuresleep(DWT_PRESRV_SLEEP | DWT_CONFIG, DWT_WAKE_CS | DWT_WAKE_WK| DWT_SLP_EN); - dwt_entersleep(); - DW_DISABLE; - if(HAL_UART_Receive_DMA(&huart1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE)) - { - Error_Handler(); - } - HAL_Delay(2000); + GPIO_InitTypeDef GPIO_InitStruct = {0}; + HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET); + GPIO_InitStruct.Pin = GPIO_PIN_5; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_PULLUP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + LED_LG_ON; + Program_Init(); + // LIS3DH_Data_Init(); + Dw1000_Init(); + Dw1000_App_Init(); + // HardWareTypeDiffConfig(); + dwt_configuresleep(DWT_PRESRV_SLEEP | DWT_CONFIG, DWT_WAKE_CS | DWT_WAKE_WK| DWT_SLP_EN); + dwt_entersleep(); + DW_DISABLE; + if(HAL_UART_Receive_DMA(&huart1,m_EUART_DMA_RXBuf,EUART_RX_BUF_SIZE)) + { + Error_Handler(); + } + HAL_Delay(1000); // mcu_sleep(); //LED0_BLINK; // SystemPower_Config(); @@ -396,11 +411,12 @@ /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ + HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET); if(g_start_send_flag) { static uint16_t blink_count=0; SystemClock_Config(); g_start_send_flag = 0; - + HAL_IWDG_Refresh(&hiwdg); // if(current_count>slot_startcount&¤t_count<slot_startcount+interval_count) // { // HAL_GPIO_WritePin(LED0_GPIO, GPIO_PIN_9, GPIO_PIN_SET); @@ -424,24 +440,21 @@ if(waitusart_timer>0) { waitusart_timer--; - } - if(m_bEUARTTxEn==0&&waitusart_timer==0) - { - if(memcmp(g_com_map2,g_com_map,200)!=0) - { - SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; - } -#ifndef DEBUG_MODE -if(!HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin)) - HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); -#endif - } - - + } }else{ IdleTask(); } - + if(m_bEUARTTxEn==0&&waitusart_timer==0) + { + if(memcmp(g_com_map2,g_com_map,200)!=0) + { + SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; + } + #ifndef DEBUG_MODE + if(!HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin)) + HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); + #endif + } // HAL_Delay(100); // Get_Battary(); @@ -469,10 +482,12 @@ __HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_HIGH); /** Initializes the CPU, AHB and APB busses clocks */ - 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; @@ -509,11 +524,6 @@ * @param None * @retval None */ -void MX_ADC_DeInit(void) -{ - HAL_ADC_DeInit(&hadc); - HAL_ADCEx_DisableVREFINT(); -} void MX_ADC_Init(void) { @@ -532,7 +542,7 @@ hadc.Init.OversamplingMode = DISABLE; hadc.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV2; hadc.Init.Resolution = ADC_RESOLUTION_12B; - hadc.Init.SamplingTime = ADC_SAMPLETIME_160CYCLES_5; + hadc.Init.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; hadc.Init.ScanConvMode = ADC_SCAN_DIRECTION_FORWARD; hadc.Init.DataAlign = ADC_DATAALIGN_RIGHT; hadc.Init.ContinuousConvMode = DISABLE; @@ -561,6 +571,35 @@ HAL_ADCEx_EnableVREFINT(); 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_256; + hiwdg.Init.Window = 4095; + hiwdg.Init.Reload = 4095; + if (HAL_IWDG_Init(&hiwdg) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN IWDG_Init 2 */ + + /* USER CODE END IWDG_Init 2 */ } @@ -634,69 +673,6 @@ /* USER CODE BEGIN SPI1_Init 2 */ __HAL_SPI_ENABLE(&hspi1); /* USER CODE END SPI1_Init 2 */ - -} - -/** - * @brief TIM2 Initialization Function - * @param None - * @retval None - */ -static void MX_TIM2_Init(void) -{ - - /* USER CODE BEGIN TIM2_Init 0 */ - - /* USER CODE END TIM2_Init 0 */ - - TIM_ClockConfigTypeDef sClockSourceConfig = {0}; - TIM_MasterConfigTypeDef sMasterConfig = {0}; - TIM_OC_InitTypeDef sConfigOC = {0}; - - /* USER CODE BEGIN TIM2_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) - { - Error_Handler(); - } - sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; - if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) - { - Error_Handler(); - } - if (HAL_TIM_PWM_Init(&htim2) != HAL_OK) - { - Error_Handler(); - } - sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; - sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; - if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) - { - Error_Handler(); - } - sConfigOC.OCMode = TIM_OCMODE_PWM1; - sConfigOC.Pulse = 599; - sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; - sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != 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); } @@ -885,9 +861,9 @@ extern float freqlost_count,range_lost_time; void HAL_LPTIM_CompareMatchCallback(LPTIM_HandleTypeDef *hlptim) { - static uint8_t i=0; + static uint8_t i=0,lost_jumpcount=0; i++; - g_start_send_flag=1; + current_slotnum++; freqlost_count+=1/(float)tag_frequency; range_lost_time +=1/(float)tag_frequency; @@ -895,6 +871,13 @@ if(freqlost_count>FREQ_LOST_TIME) { tag_frequency = NOTAG_FREQ; + if(lost_jumpcount++>=4) //无测距情况下,每5秒发一次; + { + lost_jumpcount = 0; + g_start_send_flag=1; + } + }else{ + g_start_send_flag=1; } if(range_lost_time<1||freqlost_count>FREQ_LOST_TIME) { -- Gitblit v1.9.3