Skip to content

FDCAN bus interrupts are not handled for the STM32G0B1 causing an infinite loop #2224

Closed
@rondlh

Description

@rondlh

With my limited understanding I see the following:

The FDCAN implementation on the STM32G0B1 uses interrupt "TIM16_FDCAN_IT0_IRQn", which calls "TIM16_IRQHandler(void)" (in HardwareTimer.cpp).
In "timer.h" it says: #define TIM16_IRQHandler TIM16_FDCAN_IT0_IRQHandler.

"TIM16_IRQHandler" should analyze the interrupt source and forward to "HAL_FDCAN_IRQHandler" if the FDCAN bus is the interrupt source so the FDCAN callbacks can be used/called.

Currently TIM16_IRQHandler only processes interrupts triggered by Tim16, so the FDCAN bus callbacks cannot be used, and even worse, the interrupt flag is not cleared causing an infinite loop.

"TIM16_IRQHandler" in HardwareTimer.cpp

void TIM16_IRQHandler(void)
  {
    if (HardwareTimer_Handle[TIMER16_INDEX]) {
      HAL_TIM_IRQHandler(&HardwareTimer_Handle[TIMER16_INDEX]->handle);
    }
  }

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions