Hello,
I try to initialize an interrupt vector for timer 2 that TIM2_IRQHandler is executed. I use a STM32F401CE controller. With the code below the handler TIM2_IRQHandler is never triggered.
Does anybody have an idea which functions I have to execute further to actived a trigger for timer 2?
#include <Arduino.h>
#include "IWatchdog.h"
/* Set TIMx instance */
TIM_HandleTypeDef Tim2Handle;
/**
* Blaue LED initialisieren
*/
void InitBlueLed()
{
__HAL_RCC_GPIOC_CLK_ENABLE();
GPIO_InitTypeDef BoardLEDs;
BoardLEDs.Mode = GPIO_MODE_OUTPUT_PP;
BoardLEDs.Pin = GPIO_PIN_13;
HAL_GPIO_Init(GPIOC, &BoardLEDs);
}
static void InitTimer2(void)
{
Tim2Handle.Instance = TIM2;
Tim2Handle.Init.Period = 32;
Tim2Handle.Init.Prescaler = 2500;
Tim2Handle.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
Tim2Handle.Init.CounterMode = TIM_COUNTERMODE_UP;
Tim2Handle.Init.RepetitionCounter = 0;
Tim2Handle.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
// Timer & Interrupt initialisieren
HAL_TIM_Base_Init(&Tim2Handle);
HAL_TIM_Base_MspInit(&Tim2Handle);
HAL_TIM_Base_Start(&Tim2Handle);
HAL_TIM_Base_Start_IT(&Tim2Handle);
__HAL_RCC_SYSCFG_CLK_ENABLE();
__HAL_RCC_PWR_CLK_ENABLE();
HAL_NVIC_SetPriority(TIM2_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(TIM2_IRQn);
}
/**
* Interrupt an Timer 2
*/
void TIM2_IRQHandler(void)
{
// Interrupt triggered
if (TIM2->SR & TIM_SR_UIF)
{
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
}
HAL_TIM_IRQHandler(&Tim2Handle);
}
int main()
{
HAL_Init();
SystemClock_Config();
InitBlueLed();
InitTimer2();
int state = 0;
while (1)
{
// LED toggeln
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
HAL_Delay(1000);
}
return 0;
}