Solved
STM32C092GCU6: FDCAN interrupt handler name mismatch
- May 6, 2026
- 3 replies
- 233 views
Hello,
I may have found a bug related to the STM32C092GCU6 MCU and the FDCAN peripheral.
I created a new project and experienced issues with FDCAN reception: no RX messages were received, and the callback
HAL_FDCAN_RxFifo0Callback() was never triggered.
After several days of troubleshooting, I discovered a possible mismatch between the startup file and the generated interrupt handler names.
In startup_stm32c092gcux.s, the following interrupt vectors are defined:
.word FDCAN_IT0_IRQHandler /* FDCAN global interrupt 0 */
.word FDCAN_IT1_IRQHandler /* FDCAN global interrupt 1 */
However, when generating code with STM32CubeMX, the following interrupt handlers are created in stm32c0xx_it.c:
void FDCAN1_IT0_IRQHandler(void)
{
HAL_FDCAN_IRQHandler(&hfdcan1);
}
void FDCAN1_IT1_IRQHandler(void)
{
HAL_FDCAN_IRQHandler(&hfdcan1);
}
As a result, the startup file expects FDCAN_IT0_IRQHandler / FDCAN_IT1_IRQHandler,
but the generated code provides FDCAN1_IT0_IRQHandler / FDCAN1_IT1_IRQHandler.
Because of this mismatch, the FDCAN interrupts are never handled.
I am not sure whether this is a configuration issue on my side, or a bug
in the startup file or STM32CubeMX code generation for this device.
Attached you can find:
- the .ioc file
- startup_stm32c092gcux.s
- stm32c0xx_it.c
