208 lines
5.5 KiB
C
208 lines
5.5 KiB
C
/* USER CODE BEGIN Header */
|
||
/**
|
||
******************************************************************************
|
||
* @file tim.c
|
||
* @brief This file provides code for the configuration
|
||
* of the TIM instances.
|
||
******************************************************************************
|
||
* @attention
|
||
*
|
||
* Copyright (c) 2025 STMicroelectronics.
|
||
* All rights reserved.
|
||
*
|
||
* This software is licensed under terms that can be found in the LICENSE file
|
||
* in the root directory of this software component.
|
||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||
*
|
||
******************************************************************************
|
||
*/
|
||
/* USER CODE END Header */
|
||
/* Includes ------------------------------------------------------------------*/
|
||
#include "tim.h"
|
||
|
||
/* USER CODE BEGIN 0 */
|
||
#include "modbus.h"
|
||
/* USER CODE END 0 */
|
||
|
||
TIM_HandleTypeDef htim1;
|
||
TIM_HandleTypeDef htim3;
|
||
|
||
/* TIM1 init function */
|
||
void MX_TIM1_Init(void)
|
||
{
|
||
|
||
/* USER CODE BEGIN TIM1_Init 0 */
|
||
|
||
/* USER CODE END TIM1_Init 0 */
|
||
|
||
TIM_ClockConfigTypeDef sClockSourceConfig = {0};
|
||
TIM_MasterConfigTypeDef sMasterConfig = {0};
|
||
|
||
/* USER CODE BEGIN TIM1_Init 1 */
|
||
|
||
/* USER CODE END TIM1_Init 1 */
|
||
htim1.Instance = TIM1;
|
||
htim1.Init.Prescaler = 71;
|
||
htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||
htim1.Init.Period = 999;
|
||
htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||
htim1.Init.RepetitionCounter = 0;
|
||
htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
|
||
if (HAL_TIM_Base_Init(&htim1) != HAL_OK)
|
||
{
|
||
Error_Handler();
|
||
}
|
||
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
|
||
if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK)
|
||
{
|
||
Error_Handler();
|
||
}
|
||
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
||
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||
if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK)
|
||
{
|
||
Error_Handler();
|
||
}
|
||
/* USER CODE BEGIN TIM1_Init 2 */
|
||
|
||
/* USER CODE END TIM1_Init 2 */
|
||
|
||
}
|
||
/* TIM3 init function */
|
||
void MX_TIM3_Init(void)
|
||
{
|
||
|
||
/* USER CODE BEGIN TIM3_Init 0 */
|
||
|
||
/* USER CODE END TIM3_Init 0 */
|
||
|
||
TIM_ClockConfigTypeDef sClockSourceConfig = {0};
|
||
TIM_MasterConfigTypeDef sMasterConfig = {0};
|
||
|
||
/* USER CODE BEGIN TIM3_Init 1 */
|
||
|
||
/* USER CODE END TIM3_Init 1 */
|
||
htim3.Instance = TIM3;
|
||
htim3.Init.Prescaler = 71;
|
||
htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||
htim3.Init.Period = 999;
|
||
htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||
htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
|
||
if (HAL_TIM_Base_Init(&htim3) != HAL_OK)
|
||
{
|
||
Error_Handler();
|
||
}
|
||
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
|
||
if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK)
|
||
{
|
||
Error_Handler();
|
||
}
|
||
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
||
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||
if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK)
|
||
{
|
||
Error_Handler();
|
||
}
|
||
/* USER CODE BEGIN TIM3_Init 2 */
|
||
|
||
/* USER CODE END TIM3_Init 2 */
|
||
|
||
}
|
||
|
||
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
|
||
{
|
||
|
||
if(tim_baseHandle->Instance==TIM1)
|
||
{
|
||
/* USER CODE BEGIN TIM1_MspInit 0 */
|
||
|
||
/* USER CODE END TIM1_MspInit 0 */
|
||
/* TIM1 clock enable */
|
||
__HAL_RCC_TIM1_CLK_ENABLE();
|
||
|
||
/* TIM1 interrupt Init */
|
||
HAL_NVIC_SetPriority(TIM1_UP_IRQn, 0, 0);
|
||
HAL_NVIC_EnableIRQ(TIM1_UP_IRQn);
|
||
/* USER CODE BEGIN TIM1_MspInit 1 */
|
||
|
||
/* USER CODE END TIM1_MspInit 1 */
|
||
}
|
||
else if(tim_baseHandle->Instance==TIM3)
|
||
{
|
||
/* USER CODE BEGIN TIM3_MspInit 0 */
|
||
|
||
/* USER CODE END TIM3_MspInit 0 */
|
||
/* TIM3 clock enable */
|
||
__HAL_RCC_TIM3_CLK_ENABLE();
|
||
|
||
/* TIM3 interrupt Init */
|
||
HAL_NVIC_SetPriority(TIM3_IRQn, 0, 0);
|
||
HAL_NVIC_EnableIRQ(TIM3_IRQn);
|
||
/* USER CODE BEGIN TIM3_MspInit 1 */
|
||
|
||
/* USER CODE END TIM3_MspInit 1 */
|
||
}
|
||
}
|
||
|
||
void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle)
|
||
{
|
||
|
||
if(tim_baseHandle->Instance==TIM1)
|
||
{
|
||
/* USER CODE BEGIN TIM1_MspDeInit 0 */
|
||
|
||
/* USER CODE END TIM1_MspDeInit 0 */
|
||
/* Peripheral clock disable */
|
||
__HAL_RCC_TIM1_CLK_DISABLE();
|
||
|
||
/* TIM1 interrupt Deinit */
|
||
HAL_NVIC_DisableIRQ(TIM1_UP_IRQn);
|
||
/* USER CODE BEGIN TIM1_MspDeInit 1 */
|
||
|
||
/* USER CODE END TIM1_MspDeInit 1 */
|
||
}
|
||
else if(tim_baseHandle->Instance==TIM3)
|
||
{
|
||
/* USER CODE BEGIN TIM3_MspDeInit 0 */
|
||
|
||
/* USER CODE END TIM3_MspDeInit 0 */
|
||
/* Peripheral clock disable */
|
||
__HAL_RCC_TIM3_CLK_DISABLE();
|
||
|
||
/* TIM3 interrupt Deinit */
|
||
HAL_NVIC_DisableIRQ(TIM3_IRQn);
|
||
/* USER CODE BEGIN TIM3_MspDeInit 1 */
|
||
|
||
/* USER CODE END TIM3_MspDeInit 1 */
|
||
}
|
||
}
|
||
|
||
/* USER CODE BEGIN 1 */
|
||
int it_5ms_flag = 0;
|
||
int it_5ms_cnt = 0;
|
||
int it_1000ms_flag = 0;
|
||
int it_1000ms_cnt = 0;
|
||
|
||
//<2F><>дTIM<49>жϵ<D0B6><CFB5>ú<EFBFBD><C3BA><EFBFBD>
|
||
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
|
||
{
|
||
if(htim == &htim1)
|
||
{
|
||
it_5ms_cnt++;
|
||
if(it_5ms_cnt > 4) { it_5ms_flag = 1; it_5ms_cnt = 0; }
|
||
it_1000ms_cnt++;
|
||
if(it_1000ms_cnt > 999) { it_1000ms_flag = 1; it_1000ms_cnt = 0; }
|
||
}
|
||
if(htim == &MODBUS_HTIM)
|
||
{
|
||
__HAL_TIM_CLEAR_FLAG(&MODBUS_HTIM, TIM_FLAG_UPDATE);//<2F><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1msû<73>н<EFBFBD><D0BD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD>һ֡<D2BB><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
HAL_TIM_Base_Stop_IT(&MODBUS_HTIM); //<2F>ж<EFBFBD>֮<EFBFBD><D6AE>ֹͣ<CDA3><D6B9>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ν<EFBFBD><CEBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ݿ<EFBFBD>ʼ
|
||
MODBUS_UART.rx_size = MODBUS_UART.rx_buf_cnt; //<2F><><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||
MODBUS_UART.rx_buf_cnt = 0; //<2F><><EFBFBD><EFBFBD>
|
||
modbus_process_rtu();
|
||
if(!HAL_GPIO_ReadPin(ASSIGNADDR_GPIO_Port,ASSIGNADDR_Pin))
|
||
set_addr_cb();
|
||
}
|
||
}
|
||
/* USER CODE END 1 */
|