Also just to state the obvious are you enabling the clock and pointing to the right int handler. i.e. RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3 , ENABLE); NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQChannel; NVIC_Init(&NVIC_InitStructure);