Loading...
 

Zephyr project on STM32

   Zephyr Workbench, a VSCode extension to manage Zephyr on STM32.
It enables users to easily create, develop, and debug Zephyr applications.
Main features:
  • Install host dependencies.
  • Import toolchain and SDK.
  • Create, configure, build and manage apps.
  • Debug STM32.
You can directly download it from the VSCode marketplace
For more details, visit the Zephyr Workbench

System Workbench for STM32


Timer interrupt error.

Hello,

I’m tring to reset a LED register with a timer (TIM4) interrupt, but TIM4_IRQHandler(void); fucntion it’s never launch, the code that i’m using is: (mi board es STM32f429I-DISC1).

Some one can help me please?

Thank you very much for your attention

JPorte.
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

  1. include “stm32f4xx.h”


TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

void INTTIM_Config(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
TIM_TimeBaseStructure.TIM_Period = 10 - 1;
TIM_TimeBaseStructure.TIM_Prescaler =84 - 1;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
TIM_ITConfig(TIM4, TIM_FLAG_Update, ENABLE);
TIM_Cmd(TIM4, ENABLE);

NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_SetPriority(TIM4_IRQn, NVIC_EncodePriority(4,15,0));

NVIC_EnableIRQ(TIM4_IRQn);
NVIC_Init(&NVIC_InitStructure);

}

int main(void) {

GPIO_InitTypeDef GPIO_InitDef;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG, ENABLE);

GPIO_InitDef.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14;
GPIO_InitDef.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitDef.GPIO_OType = GPIO_OType_PP;
GPIO_InitDef.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitDef.GPIO_Speed = GPIO_Speed_100MHz;
//Initialize pins
GPIO_Init(GPIOG, &GPIO_InitDef);
GPIO_SetBits(GPIOG, GPIO_Pin_13 | GPIO_Pin_14);

INTTIM_Config();

while (1) {

}

}

void TIM4_IRQHandler(void)
{
GPIO_ResetBits(GPIOG, GPIO_Pin_13 | GPIO_Pin_14);

if (TIM_GetITStatus(TIM4, TIM_FLAG_Update) != RESET)
{
TIM_ClearFlag(TIM4, TIM_FLAG_Update);
GPIO_ResetBits(GPIOG, GPIO_Pin_13 | GPIO_Pin_14);
}
}

Hi , Joaquim

Inside your code, you never start the timer.
You need to start it in your main function.

Best Regards
Souleymane (AC6-Training)


 

Newest Forum Posts

  1. SPI on Nucleo_STMH533RE by royjamil, 2025-05-04 20:13
  2. SPI on Nucleo_STMH533RE by higginsa1, 2025-03-25 07:37
  3. SPI on Nucleo_STMH533RE by royjamil, 2025-03-23 11:31
  4. SPI on Nucleo_STMH533RE by higginsa1, 2025-03-23 09:33
  5. Configuring DMA for ADC in SW? by sam.hodgson, 2025-03-04 12:58
  6. Build a project in "release" mode by info@creosrl.it, 2025-02-20 18:12
  7. Build a project in "release" mode by info@creosrl.it, 2025-02-20 17:05
  8. Build a project in "release" mode by tang, 2025-02-20 10:36
  9. Build a project in "release" mode by info@creosrl.it, 2025-02-19 17:35
  10. Fail to debug in Win 11 C/C++ by mortenlund, 2024-12-26 20:27

Last-Modified Blogs