Fix crash when using FDCAN3 RX IRQ on STM32G473 (and others) #15447
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary of changes
Impact of changes
No impact expected, aside from FDCAN3 ISR registration working correctly on STM32 devices with 3 FDCAN peripherals.
Documentation
STM32G473 (and others in its family) have 3 CANFD devices, but TARGET_STM/can_api.c has a hard-coded array of can_irq_contexts[2]. As a result, registering an RX ISR handler for a device using FDCAN3 results in a crash.
It's unclear how can_irq_init(...) avoids this crash, but can_irq(...) crashes on the line
irq_handler(can_irq_contexts[id], IRQ_RX);
.Pull request type
Test results
Prior to change:
After change:
Reviewers