void HAL_TIM_IC_MspInit(TIM_HandleTypeDef* htim_ic) { GPIO_InitTypeDef GPIO_InitStruct; if(htim_ic->Instance==TIM5) { /* USER CODE BEGIN TIM5_MspInit 0 */ /* USER CODE END TIM5_MspInit 0 */ /* Peripheral clock enable */ __TIM5_CLK_ENABLE(); /**TIM5 GPIO Configuration PA0-WKUP ------> TIM5_CH1 */ GPIO_InitStruct.Pin = GPIO_PIN_0; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FAST; GPIO_InitStruct.Alternate = GPIO_AF2_TIM5; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* Peripheral interrupt init*/ HAL_NVIC_SetPriority(TIM5_IRQn, 0, 0); HAL_NVIC_EnableIRQ(TIM5_IRQn); /* USER CODE BEGIN TIM5_MspInit 1 */ /* USER CODE END TIM5_MspInit 1 */ } }
void pwmout_init(pwmout_t* obj, PinName pin) { // Get the peripheral name from the pin and assign it to the object obj->pwm = (PWMName)pinmap_peripheral(pin, PinMap_PWM); if (obj->pwm == (PWMName)NC) { error("PWM error: pinout mapping failed."); } // Enable TIM clock if (obj->pwm == PWM_2) __TIM2_CLK_ENABLE(); if (obj->pwm == PWM_3) __TIM3_CLK_ENABLE(); if (obj->pwm == PWM_4) __TIM4_CLK_ENABLE(); if (obj->pwm == PWM_5) __TIM5_CLK_ENABLE(); if (obj->pwm == PWM_9) __TIM9_CLK_ENABLE(); if (obj->pwm == PWM_10) __TIM10_CLK_ENABLE(); if (obj->pwm == PWM_11) __TIM11_CLK_ENABLE(); // Configure GPIO pinmap_pinout(pin, PinMap_PWM); obj->pin = pin; obj->period = 0; obj->pulse = 0; pwmout_period_us(obj, 20000); // 20 ms per default }
void TickTock_Init(void) { __TIM5_CLK_ENABLE(); TIM_Handle.Instance = TIM5; TIM_Handle.Init.Period = 0xFFFFFFFF; TIM_Handle.Init.Prescaler = 83; TIM_Handle.Init.ClockDivision = 0; TIM_Handle.Init.CounterMode = TIM_COUNTERMODE_UP; HAL_TIM_Base_Init(&TIM_Handle); HAL_TIM_Base_Start(&TIM_Handle); }
/** * @brief TIM MSP Initialization * This function configures the hardware resources used in this example: * - Peripheral's clock enable * @param htim: TIM handle pointer * @retval None */ void HAL_TIM_IC_MspInit(TIM_HandleTypeDef *htim) { /* TIM5 Peripheral clock enable */ __TIM5_CLK_ENABLE(); /* Configure the NVIC for TIM5 */ HAL_NVIC_SetPriority(TIM5_IRQn, 0, 0); /* Enable the TIM5 global Interrupt */ HAL_NVIC_EnableIRQ(TIM5_IRQn); }
// TIM5 is set-up for the servo controller // This function inits but does not start the timer void timer_tim5_init(void) { // TIM5 clock enable __TIM5_CLK_ENABLE(); // set up and enable interrupt HAL_NVIC_SetPriority(TIM5_IRQn, 6, 0); HAL_NVIC_EnableIRQ(TIM5_IRQn); // PWM clock configuration TIM5_Handle.Instance = TIM5; TIM5_Handle.Init.Period = 2000; // timer cycles at 50Hz TIM5_Handle.Init.Prescaler = ((SystemCoreClock / 2) / 100000) - 1; // timer runs at 100kHz TIM5_Handle.Init.ClockDivision = 0; TIM5_Handle.Init.CounterMode = TIM_COUNTERMODE_UP; HAL_TIM_PWM_Init(&TIM5_Handle); }
void TIMER5_Init_(void) { /* TIMx Peripheral clock enable */ __TIM5_CLK_ENABLE(); /* Set TIMx instance */ timer_hd.Instance = TIMER_STOPWATCH; /* Initialize TIMx peripheral */ timer_hd.Init.Period = ~0; timer_hd.Init.Prescaler = 0; timer_hd.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; timer_hd.Init.CounterMode = TIM_COUNTERMODE_UP; HAL_ASSERT(HAL_OK == HAL_TIM_Base_Init(&timer_hd)); /*##-2- Configure the NVIC for TIMx ########################################*/ /* Set Interrupt Group Priority */ HAL_NVIC_SetPriority(TIMER_STOPWATCH_IRQ, HAL_IRQ_PRIO_TIMER_STOPWATCH, 0); /* Enable the TIMx global Interrupt */ HAL_NVIC_EnableIRQ(TIMER_STOPWATCH_IRQ); }
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) { GPIO_InitTypeDef GPIO_InitStruct; if(htim_base->Instance==TIM5) { __TIM5_CLK_ENABLE(); /**TIM5 GPIO Configuration PA0 ------> TIM1_CH1 */ GPIO_InitStruct.Pin = GPIO_PIN_0; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_PULLDOWN; GPIO_InitStruct.Speed = GPIO_SPEED_LOW; GPIO_InitStruct.Alternate = GPIO_AF2_TIM5; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); } if(htim_base->Instance==TIM1) __TIM1_CLK_ENABLE(); }
void Timer_Init(void) { #ifndef _MS_VS __TIM6_CLK_ENABLE(); // Для отсчёта миллисекунд __TIM2_CLK_ENABLE(); // Для тиков __TIM5_CLK_ENABLE(); #endif HAL_TIM_Base_Init((TIM_HandleTypeDef*)&handleTIM6); HAL_TIM_Base_Start_IT((TIM_HandleTypeDef*)&handleTIM6); TIM_HandleTypeDef handleTIM2 = { TIM2, { 0, TIM_COUNTERMODE_UP, 0xffffffff, TIM_CLOCKDIVISION_DIV4 } }; HAL_TIM_Base_Init((TIM_HandleTypeDef*)&handleTIM2); HAL_TIM_Base_Start((TIM_HandleTypeDef*)&handleTIM2); TIM_HandleTypeDef handleTIM5 = { TIM5, { 8999, // WARN Так и не разобрался, как настроить таймер на 1мс. При 8999 период счета - 10мс. TIM_COUNTERMODE_UP, 0xffffffff, TIM_CLOCKDIVISION_DIV1 } }; HAL_TIM_Base_Init((TIM_HandleTypeDef*)&handleTIM5); HAL_TIM_Base_Start((TIM_HandleTypeDef*)&handleTIM5); }
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) { GPIO_InitTypeDef GPIO_InitStruct; if(htim_base->Instance==TIM1) { /* USER CODE BEGIN TIM1_MspInit 0 */ /* USER CODE END TIM1_MspInit 0 */ /* Peripheral clock enable */ __TIM1_CLK_ENABLE(); /**TIM1 GPIO Configuration PE9 ------> TIM1_CH1 PE11 ------> TIM1_CH2 PE13 ------> TIM1_CH3 */ GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_11; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_LOW; GPIO_InitStruct.Alternate = GPIO_AF1_TIM1; HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); GPIO_InitStruct.Pin = GPIO_PIN_13; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_PULLDOWN; GPIO_InitStruct.Speed = GPIO_SPEED_LOW; GPIO_InitStruct.Alternate = GPIO_AF1_TIM1; HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); /* Peripheral interrupt init*/ HAL_NVIC_SetPriority(TIM1_CC_IRQn, 0, 9); HAL_NVIC_EnableIRQ(TIM1_CC_IRQn); /* USER CODE BEGIN TIM1_MspInit 1 */ /* USER CODE END TIM1_MspInit 1 */ } else if(htim_base->Instance==TIM2) { /* USER CODE BEGIN TIM2_MspInit 0 */ /* USER CODE END TIM2_MspInit 0 */ /* Peripheral clock enable */ __TIM2_CLK_ENABLE(); /* Peripheral interrupt init*/ HAL_NVIC_SetPriority(TIM2_IRQn, 0, 5); HAL_NVIC_EnableIRQ(TIM2_IRQn); /* USER CODE BEGIN TIM2_MspInit 1 */ /* USER CODE END TIM2_MspInit 1 */ } else if(htim_base->Instance==TIM5) { /* USER CODE BEGIN TIM5_MspInit 0 */ /* USER CODE END TIM5_MspInit 0 */ /* Peripheral clock enable */ __TIM5_CLK_ENABLE(); /**TIM5 GPIO Configuration PA1 ------> TIM5_CH2 */ GPIO_InitStruct.Pin = GPIO_PIN_1; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_LOW; GPIO_InitStruct.Alternate = GPIO_AF2_TIM5; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* Peripheral interrupt init*/ HAL_NVIC_SetPriority(TIM5_IRQn, 0, 13); HAL_NVIC_EnableIRQ(TIM5_IRQn); /* USER CODE BEGIN TIM5_MspInit 1 */ /* USER CODE END TIM5_MspInit 1 */ } else if(htim_base->Instance==TIM9) { /* USER CODE BEGIN TIM9_MspInit 0 */ /* USER CODE END TIM9_MspInit 0 */ /* Peripheral clock enable */ __TIM9_CLK_ENABLE(); /**TIM9 GPIO Configuration PE5 ------> TIM9_CH1 PE6 ------> TIM9_CH2 */ GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_LOW; GPIO_InitStruct.Alternate = GPIO_AF3_TIM9; HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); /* USER CODE BEGIN TIM9_MspInit 1 */ /* USER CODE END TIM9_MspInit 1 */ } else if(htim_base->Instance==TIM10) { /* USER CODE BEGIN TIM10_MspInit 0 */ /* USER CODE END TIM10_MspInit 0 */ /* Peripheral clock enable */ __TIM10_CLK_ENABLE(); /**TIM10 GPIO Configuration PF6 ------> TIM10_CH1 */ GPIO_InitStruct.Pin = GPIO_PIN_6; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_LOW; GPIO_InitStruct.Alternate = GPIO_AF3_TIM10; HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); /* USER CODE BEGIN TIM10_MspInit 1 */ /* USER CODE END TIM10_MspInit 1 */ } else if(htim_base->Instance==TIM11) { /* USER CODE BEGIN TIM11_MspInit 0 */ /* USER CODE END TIM11_MspInit 0 */ /* Peripheral clock enable */ __TIM11_CLK_ENABLE(); /**TIM11 GPIO Configuration PF7 ------> TIM11_CH1 */ GPIO_InitStruct.Pin = GPIO_PIN_7; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_LOW; GPIO_InitStruct.Alternate = GPIO_AF3_TIM11; HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); /* USER CODE BEGIN TIM11_MspInit 1 */ /* USER CODE END TIM11_MspInit 1 */ } else if(htim_base->Instance==TIM13) { /* USER CODE BEGIN TIM13_MspInit 0 */ /* USER CODE END TIM13_MspInit 0 */ /* Peripheral clock enable */ __TIM13_CLK_ENABLE(); /**TIM13 GPIO Configuration PF8 ------> TIM13_CH1 */ GPIO_InitStruct.Pin = GPIO_PIN_8; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_LOW; GPIO_InitStruct.Alternate = GPIO_AF9_TIM13; HAL_GPIO_Init(GPIOF, &GPIO_InitStruct); /* USER CODE BEGIN TIM13_MspInit 1 */ /* USER CODE END TIM13_MspInit 1 */ } }
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) { GPIO_InitTypeDef GPIO_InitStruct; if(htim_base->Instance == TIM1) { // I am too lazy to enable GPIO clocks one by one. Just assume that // all the GPIO clocks are already enabled. __TIM1_CLK_ENABLE(); GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_LOW; GPIO_InitStruct.Pin = TIM1_CHAN1_PIN; GPIO_InitStruct.Alternate = TIM1_CHAN1_AF; HAL_GPIO_Init(TIM1_CHAN1_PORT, &GPIO_InitStruct); GPIO_InitStruct.Pin = TIM1_CHAN2_PIN; GPIO_InitStruct.Alternate = TIM1_CHAN2_AF; HAL_GPIO_Init(TIM1_CHAN2_PORT, &GPIO_InitStruct); GPIO_InitStruct.Pin = TIM1_CHAN3_PIN; GPIO_InitStruct.Alternate = TIM1_CHAN3_AF; HAL_GPIO_Init(TIM1_CHAN3_PORT, &GPIO_InitStruct); GPIO_InitStruct.Pin = TIM1_CHAN4_PIN; GPIO_InitStruct.Alternate = TIM1_CHAN4_AF; HAL_GPIO_Init(TIM1_CHAN4_PORT, &GPIO_InitStruct); } else if (htim_base->Instance == TIM3) { // I am too lazy to enable GPIO clocks one by one. Just assume that // all the GPIO clocks are already enabled. __TIM3_CLK_ENABLE(); GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_LOW; GPIO_InitStruct.Pin = TIM3_CHAN1_PIN; GPIO_InitStruct.Alternate = TIM3_CHAN1_AF; HAL_GPIO_Init(TIM3_CHAN1_PORT, &GPIO_InitStruct); GPIO_InitStruct.Pin = TIM3_CHAN2_PIN; GPIO_InitStruct.Alternate = TIM3_CHAN2_AF; HAL_GPIO_Init(TIM3_CHAN2_PORT, &GPIO_InitStruct); GPIO_InitStruct.Pin = TIM3_CHAN3_PIN; GPIO_InitStruct.Alternate = TIM3_CHAN3_AF; HAL_GPIO_Init(TIM3_CHAN3_PORT, &GPIO_InitStruct); GPIO_InitStruct.Pin = TIM3_CHAN4_PIN; GPIO_InitStruct.Alternate = TIM3_CHAN4_AF; HAL_GPIO_Init(TIM3_CHAN4_PORT, &GPIO_InitStruct); } else if (htim_base->Instance == TIM5) { __TIM5_CLK_ENABLE(); } }
void encodersbsp_init(void) { GPIO_InitTypeDef GPIO_InitStruct; TIM_Encoder_InitTypeDef sConfig; __TIM2_CLK_ENABLE(); GPIO_InitStruct.Pin = GPIO_PIN_15; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_LOW; GPIO_InitStruct.Alternate = GPIO_AF1_TIM2; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); GPIO_InitStruct.Pin = GPIO_PIN_3; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_LOW; GPIO_InitStruct.Alternate = GPIO_AF1_TIM2; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); __TIM5_CLK_ENABLE(); GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_LOW; GPIO_InitStruct.Alternate = GPIO_AF2_TIM5; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); mst_htim2.Instance = TIM2; mst_htim2.Init.Prescaler = 0; mst_htim2.Init.CounterMode = TIM_COUNTERMODE_UP; mst_htim2.Init.Period = 0xffffffff; mst_htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; sConfig.EncoderMode = TIM_ENCODERMODE_TI12; sConfig.IC1Polarity = TIM_ICPOLARITY_RISING; sConfig.IC1Selection = TIM_ICSELECTION_DIRECTTI; sConfig.IC1Prescaler = TIM_ICPSC_DIV1; sConfig.IC1Filter = 3; sConfig.IC2Polarity = TIM_ICPOLARITY_RISING; sConfig.IC2Selection = TIM_ICSELECTION_DIRECTTI; sConfig.IC2Prescaler = TIM_ICPSC_DIV1; sConfig.IC2Filter = 3; HAL_TIM_Encoder_Init(&mst_htim2, &sConfig); mst_htim5.Instance = TIM5; mst_htim5.Init.Prescaler = 0; mst_htim5.Init.CounterMode = TIM_COUNTERMODE_UP; mst_htim5.Init.Period = 0xffffffff; mst_htim5.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; sConfig.EncoderMode = TIM_ENCODERMODE_TI12; sConfig.IC1Polarity = TIM_ICPOLARITY_RISING; sConfig.IC1Selection = TIM_ICSELECTION_DIRECTTI; sConfig.IC1Prescaler = TIM_ICPSC_DIV1; sConfig.IC1Filter = 3; sConfig.IC2Polarity = TIM_ICPOLARITY_FALLING; sConfig.IC2Selection = TIM_ICSELECTION_DIRECTTI; sConfig.IC2Prescaler = TIM_ICPSC_DIV1; sConfig.IC2Filter = 3; HAL_TIM_Encoder_Init(&mst_htim5, &sConfig); HAL_TIM_Encoder_Start(&mst_htim2, TIM_CHANNEL_1); HAL_TIM_Encoder_Start(&mst_htim2, TIM_CHANNEL_2); HAL_TIM_Encoder_Start(&mst_htim5, TIM_CHANNEL_1); HAL_TIM_Encoder_Start(&mst_htim5, TIM_CHANNEL_2); }