Hello all,
I am currently trying to understand the provided BSP for Audio Weaver on the STM32F7xx boards and have run into something that I can't fully understand. In Platform.h for both the STM32F769i and the STM32F746, there are preprocessor definitions that I don't fully understand. Some of these definitions are
- #define ProcessUSBMsg_IRQ CAN1_RX1_IRQn
- #define AudioWeaverPump_IRQ1 CAN1_RX0_IRQn
According to the reference manual for these chips, these IRQs are generated for very specific. How is it that these IRQs are being used to handle the requests that they are now associated with (i.e. how are these interrupts being generated such that they can be associated with these events)?
Thanks, Matt
6:29pm
The issue in this case is we need a couple of interrupts to use as "software" interrupts. You will see in startup_stm32f769xx.s a list of assigned external interrupts, each pre-labeled as being for a particular peripheral. However every one of these interrupts only handles a peripheral device if explicitly connected to that device. If it is not connected then you can use it a a generic software interrupt. We are not using CAN in our demo BSPs to we arbitrarily chose those interrupts to use as "software" interrupts that we trigger using the NVIC_SetPendingIRQcall.