|
|
@ -26,7 +26,6 @@ |
|
|
|
|
|
|
|
TIM_HandleTypeDef htim4; |
|
|
|
TIM_HandleTypeDef htim6; |
|
|
|
TIM_HandleTypeDef htim8; |
|
|
|
|
|
|
|
/* TIM4 init function */ |
|
|
|
void MX_TIM4_Init(void) |
|
|
@ -36,8 +35,9 @@ void MX_TIM4_Init(void) |
|
|
|
|
|
|
|
/* USER CODE END TIM4_Init 0 */ |
|
|
|
|
|
|
|
TIM_Encoder_InitTypeDef sConfig = {0}; |
|
|
|
TIM_ClockConfigTypeDef sClockSourceConfig = {0}; |
|
|
|
TIM_MasterConfigTypeDef sMasterConfig = {0}; |
|
|
|
TIM_IC_InitTypeDef sConfigIC = {0}; |
|
|
|
|
|
|
|
/* USER CODE BEGIN TIM4_Init 1 */ |
|
|
|
|
|
|
@ -48,16 +48,16 @@ void MX_TIM4_Init(void) |
|
|
|
htim4.Init.Period = 65535; |
|
|
|
htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; |
|
|
|
htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; |
|
|
|
sConfig.EncoderMode = TIM_ENCODERMODE_TI12; |
|
|
|
sConfig.IC1Polarity = TIM_ICPOLARITY_RISING; |
|
|
|
sConfig.IC1Selection = TIM_ICSELECTION_DIRECTTI; |
|
|
|
sConfig.IC1Prescaler = TIM_ICPSC_DIV1; |
|
|
|
sConfig.IC1Filter = 0; |
|
|
|
sConfig.IC2Polarity = TIM_ICPOLARITY_RISING; |
|
|
|
sConfig.IC2Selection = TIM_ICSELECTION_DIRECTTI; |
|
|
|
sConfig.IC2Prescaler = TIM_ICPSC_DIV1; |
|
|
|
sConfig.IC2Filter = 0; |
|
|
|
if (HAL_TIM_Encoder_Init(&htim4, &sConfig) != HAL_OK) |
|
|
|
if (HAL_TIM_Base_Init(&htim4) != HAL_OK) |
|
|
|
{ |
|
|
|
Error_Handler(); |
|
|
|
} |
|
|
|
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; |
|
|
|
if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK) |
|
|
|
{ |
|
|
|
Error_Handler(); |
|
|
|
} |
|
|
|
if (HAL_TIM_IC_Init(&htim4) != HAL_OK) |
|
|
|
{ |
|
|
|
Error_Handler(); |
|
|
|
} |
|
|
@ -67,6 +67,18 @@ void MX_TIM4_Init(void) |
|
|
|
{ |
|
|
|
Error_Handler(); |
|
|
|
} |
|
|
|
sConfigIC.ICPolarity = TIM_INPUTCHANNELPOLARITY_RISING; |
|
|
|
sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI; |
|
|
|
sConfigIC.ICPrescaler = TIM_ICPSC_DIV1; |
|
|
|
sConfigIC.ICFilter = 0; |
|
|
|
if (HAL_TIM_IC_ConfigChannel(&htim4, &sConfigIC, TIM_CHANNEL_1) != HAL_OK) |
|
|
|
{ |
|
|
|
Error_Handler(); |
|
|
|
} |
|
|
|
if (HAL_TIM_IC_ConfigChannel(&htim4, &sConfigIC, TIM_CHANNEL_2) != HAL_OK) |
|
|
|
{ |
|
|
|
Error_Handler(); |
|
|
|
} |
|
|
|
/* USER CODE BEGIN TIM4_Init 2 */ |
|
|
|
|
|
|
|
/* USER CODE END TIM4_Init 2 */ |
|
|
@ -105,57 +117,12 @@ void MX_TIM6_Init(void) |
|
|
|
/* USER CODE END TIM6_Init 2 */ |
|
|
|
|
|
|
|
} |
|
|
|
/* TIM8 init function */ |
|
|
|
void MX_TIM8_Init(void) |
|
|
|
{ |
|
|
|
|
|
|
|
/* USER CODE BEGIN TIM8_Init 0 */ |
|
|
|
|
|
|
|
/* USER CODE END TIM8_Init 0 */ |
|
|
|
|
|
|
|
TIM_Encoder_InitTypeDef sConfig = {0}; |
|
|
|
TIM_MasterConfigTypeDef sMasterConfig = {0}; |
|
|
|
|
|
|
|
/* USER CODE BEGIN TIM8_Init 1 */ |
|
|
|
|
|
|
|
/* USER CODE END TIM8_Init 1 */ |
|
|
|
htim8.Instance = TIM8; |
|
|
|
htim8.Init.Prescaler = 0; |
|
|
|
htim8.Init.CounterMode = TIM_COUNTERMODE_UP; |
|
|
|
htim8.Init.Period = 65535; |
|
|
|
htim8.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; |
|
|
|
htim8.Init.RepetitionCounter = 0; |
|
|
|
htim8.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; |
|
|
|
sConfig.EncoderMode = TIM_ENCODERMODE_TI12; |
|
|
|
sConfig.IC1Polarity = TIM_ICPOLARITY_RISING; |
|
|
|
sConfig.IC1Selection = TIM_ICSELECTION_DIRECTTI; |
|
|
|
sConfig.IC1Prescaler = TIM_ICPSC_DIV1; |
|
|
|
sConfig.IC1Filter = 0; |
|
|
|
sConfig.IC2Polarity = TIM_ICPOLARITY_RISING; |
|
|
|
sConfig.IC2Selection = TIM_ICSELECTION_DIRECTTI; |
|
|
|
sConfig.IC2Prescaler = TIM_ICPSC_DIV1; |
|
|
|
sConfig.IC2Filter = 0; |
|
|
|
if (HAL_TIM_Encoder_Init(&htim8, &sConfig) != HAL_OK) |
|
|
|
{ |
|
|
|
Error_Handler(); |
|
|
|
} |
|
|
|
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; |
|
|
|
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; |
|
|
|
if (HAL_TIMEx_MasterConfigSynchronization(&htim8, &sMasterConfig) != HAL_OK) |
|
|
|
{ |
|
|
|
Error_Handler(); |
|
|
|
} |
|
|
|
/* USER CODE BEGIN TIM8_Init 2 */ |
|
|
|
|
|
|
|
/* USER CODE END TIM8_Init 2 */ |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef* tim_encoderHandle) |
|
|
|
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle) |
|
|
|
{ |
|
|
|
|
|
|
|
GPIO_InitTypeDef GPIO_InitStruct = {0}; |
|
|
|
if(tim_encoderHandle->Instance==TIM4) |
|
|
|
if(tim_baseHandle->Instance==TIM4) |
|
|
|
{ |
|
|
|
/* USER CODE BEGIN TIM4_MspInit 0 */ |
|
|
|
|
|
|
@ -170,45 +137,19 @@ void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef* tim_encoderHandle) |
|
|
|
*/ |
|
|
|
GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_13; |
|
|
|
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; |
|
|
|
GPIO_InitStruct.Pull = GPIO_PULLUP; |
|
|
|
GPIO_InitStruct.Pull = GPIO_NOPULL; |
|
|
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; |
|
|
|
GPIO_InitStruct.Alternate = GPIO_AF2_TIM4; |
|
|
|
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); |
|
|
|
|
|
|
|
/* TIM4 interrupt Init */ |
|
|
|
HAL_NVIC_SetPriority(TIM4_IRQn, 5, 0); |
|
|
|
HAL_NVIC_EnableIRQ(TIM4_IRQn); |
|
|
|
/* USER CODE BEGIN TIM4_MspInit 1 */ |
|
|
|
|
|
|
|
/* USER CODE END TIM4_MspInit 1 */ |
|
|
|
} |
|
|
|
else if(tim_encoderHandle->Instance==TIM8) |
|
|
|
{ |
|
|
|
/* USER CODE BEGIN TIM8_MspInit 0 */ |
|
|
|
|
|
|
|
/* USER CODE END TIM8_MspInit 0 */ |
|
|
|
/* TIM8 clock enable */ |
|
|
|
__HAL_RCC_TIM8_CLK_ENABLE(); |
|
|
|
|
|
|
|
__HAL_RCC_GPIOC_CLK_ENABLE(); |
|
|
|
/**TIM8 GPIO Configuration |
|
|
|
PC6 ------> TIM8_CH1 |
|
|
|
PC7 ------> TIM8_CH2 |
|
|
|
*/ |
|
|
|
GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7; |
|
|
|
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; |
|
|
|
GPIO_InitStruct.Pull = GPIO_PULLUP; |
|
|
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; |
|
|
|
GPIO_InitStruct.Alternate = GPIO_AF3_TIM8; |
|
|
|
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); |
|
|
|
|
|
|
|
/* USER CODE BEGIN TIM8_MspInit 1 */ |
|
|
|
|
|
|
|
/* USER CODE END TIM8_MspInit 1 */ |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle) |
|
|
|
{ |
|
|
|
|
|
|
|
if(tim_baseHandle->Instance==TIM6) |
|
|
|
else if(tim_baseHandle->Instance==TIM6) |
|
|
|
{ |
|
|
|
/* USER CODE BEGIN TIM6_MspInit 0 */ |
|
|
|
|
|
|
@ -225,10 +166,10 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef* tim_encoderHandle) |
|
|
|
void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle) |
|
|
|
{ |
|
|
|
|
|
|
|
if(tim_encoderHandle->Instance==TIM4) |
|
|
|
if(tim_baseHandle->Instance==TIM4) |
|
|
|
{ |
|
|
|
/* USER CODE BEGIN TIM4_MspDeInit 0 */ |
|
|
|
|
|
|
@ -242,34 +183,13 @@ void HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef* tim_encoderHandle) |
|
|
|
*/ |
|
|
|
HAL_GPIO_DeInit(GPIOD, GPIO_PIN_12|GPIO_PIN_13); |
|
|
|
|
|
|
|
/* TIM4 interrupt Deinit */ |
|
|
|
HAL_NVIC_DisableIRQ(TIM4_IRQn); |
|
|
|
/* USER CODE BEGIN TIM4_MspDeInit 1 */ |
|
|
|
|
|
|
|
/* USER CODE END TIM4_MspDeInit 1 */ |
|
|
|
} |
|
|
|
else if(tim_encoderHandle->Instance==TIM8) |
|
|
|
{ |
|
|
|
/* USER CODE BEGIN TIM8_MspDeInit 0 */ |
|
|
|
|
|
|
|
/* USER CODE END TIM8_MspDeInit 0 */ |
|
|
|
/* Peripheral clock disable */ |
|
|
|
__HAL_RCC_TIM8_CLK_DISABLE(); |
|
|
|
|
|
|
|
/**TIM8 GPIO Configuration |
|
|
|
PC6 ------> TIM8_CH1 |
|
|
|
PC7 ------> TIM8_CH2 |
|
|
|
*/ |
|
|
|
HAL_GPIO_DeInit(GPIOC, GPIO_PIN_6|GPIO_PIN_7); |
|
|
|
|
|
|
|
/* USER CODE BEGIN TIM8_MspDeInit 1 */ |
|
|
|
|
|
|
|
/* USER CODE END TIM8_MspDeInit 1 */ |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle) |
|
|
|
{ |
|
|
|
|
|
|
|
if(tim_baseHandle->Instance==TIM6) |
|
|
|
else if(tim_baseHandle->Instance==TIM6) |
|
|
|
{ |
|
|
|
/* USER CODE BEGIN TIM6_MspDeInit 0 */ |
|
|
|
|
|
|
|