cancel
Showing results for 
Search instead for 
Did you mean: 

tim2 interrupt activate causes infinite loop in stm32

madhavi U
Associate II

I have generated C project with Tim2 interrupt configuration from CubeMX and converted into C++ project. when the project is in C timer2 is working. but when I changed it to C++ project, after interrupt enable function execution it stuck at Infinite Loop statement. why?can anyone help me out?

after below mentioned statement execution,it's going to infinite loop statement.

if (HAL_TIM_Base_Start_IT(&htim2) != HAL_OK)
{
Error_Handler();
}

 .section .text.Default_Handler,"ax",%progbits
Default_Handler:
Infinite_Loop:
b Infinite_Loop
.size Default_Handler, .-Default_Handler

 

1 ACCEPTED SOLUTION

Accepted Solutions
gbm
Lead III

The key phrase is C++ name mangling. Every interrupt service routine must be C, not C++. So either place it in a .c file or add extern "C" attribute to its definition.

My STM32 stuff on github - compact USB device stack and more: https://github.com/gbm-ii/gbmUSBdevice

View solution in original post

2 REPLIES 2
gbm
Lead III

The key phrase is C++ name mangling. Every interrupt service routine must be C, not C++. So either place it in a .c file or add extern "C" attribute to its definition.

My STM32 stuff on github - compact USB device stack and more: https://github.com/gbm-ii/gbmUSBdevice

yah, after adding extern "C"  attribute into ISR definition it's working. thanks 8)