Added support for working via timer

This commit is contained in:
DomStudent
2024-05-25 22:54:22 +03:00
parent 3adc9ff7bb
commit 3fbde591bd
9 changed files with 5444 additions and 30 deletions

View File

@@ -44,6 +44,8 @@
/* Private variables ---------------------------------------------------------*/
SPI_HandleTypeDef hspi1;
TIM_HandleTypeDef htim3;
/* USER CODE BEGIN PV */
/* USER CODE END PV */
@@ -52,6 +54,7 @@ SPI_HandleTypeDef hspi1;
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_SPI1_Init(void);
static void MX_TIM3_Init(void);
/* USER CODE BEGIN PFP */
/* USER CODE END PFP */
@@ -91,6 +94,7 @@ int main(void)
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_SPI1_Init();
MX_TIM3_Init();
/* USER CODE BEGIN 2 */
DS_Button EncButton;
DS_ButtonInit(&EncButton, ENC_Button_GPIO_Port, ENC_Button_Pin);
@@ -101,7 +105,8 @@ int main(void)
int64_t DisplayData = 0;
DS_Encoder Encoder;
DS_EncoderInit(&Encoder, Enc_Line1_GPIO_Port, Enc_Line1_Pin, Enc_Line2_GPIO_Port, Enc_Line2_Pin);
//DS_EncoderInit(&Encoder, Enc_Line1_GPIO_Port, Enc_Line1_Pin, Enc_Line2_GPIO_Port, Enc_Line2_Pin);
DS_EncoderInitTim(&Encoder, &htim3);
/* USER CODE END 2 */
/* Infinite loop */
@@ -109,7 +114,7 @@ int main(void)
while (1)
{
DS_ButtonUpdate(&EncButton);
DS_EncoderUpdate(&Encoder);
//DS_EncoderUpdate(&Encoder);
int8_t State = DS_EncoderGetState(&Encoder);
if(State !=0 )
@@ -214,6 +219,55 @@ static void MX_SPI1_Init(void)
}
/**
* @brief TIM3 Initialization Function
* @param None
* @retval None
*/
static void MX_TIM3_Init(void)
{
/* USER CODE BEGIN TIM3_Init 0 */
/* USER CODE END TIM3_Init 0 */
TIM_Encoder_InitTypeDef sConfig = {0};
TIM_MasterConfigTypeDef sMasterConfig = {0};
/* USER CODE BEGIN TIM3_Init 1 */
/* USER CODE END TIM3_Init 1 */
htim3.Instance = TIM3;
htim3.Init.Prescaler = 0;
htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
htim3.Init.Period = 65535;
htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV4;
htim3.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(&htim3, &sConfig) != 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 */
}
/**
* @brief GPIO Initialization Function
* @param None
@@ -238,11 +292,11 @@ static void MX_GPIO_Init(void)
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(CS_GPIO_Port, &GPIO_InitStruct);
/*Configure GPIO pins : ENC_Button_Pin Enc_Line1_Pin Enc_Line2_Pin */
GPIO_InitStruct.Pin = ENC_Button_Pin|Enc_Line1_Pin|Enc_Line2_Pin;
/*Configure GPIO pin : ENC_Button_Pin */
GPIO_InitStruct.Pin = ENC_Button_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
HAL_GPIO_Init(ENC_Button_GPIO_Port, &GPIO_InitStruct);
/* USER CODE BEGIN MX_GPIO_Init_2 */
/* USER CODE END MX_GPIO_Init_2 */