I'm currently trying to modularize the Overo link code for Lisa/L boards. This involves setting up the SPI communication on the STM32 side. I also want to use the DMA feature so that the processor is interrupted less often. The pseudo-code:
init() { // all the configurations to set up the peripherals DMA_ITConfig(DMA1_Channel2, DMA_IT_TC, ENABLE); LED_ON(2) }
periodic_1Hz() { LED_TOGGLE(3) }
dma1_c2_irq_handler() {
LED_OFF(2) }
When I power the board up led 2 and 3 work as expected. However when I send something from the Overo LED 3 stops blinking and LED 2 never goes off. My interpretation of this is that the irq_handler is not being put in the interrupt vector memory addr. Adding to this when I comment out the line that enables the interrupt and send something from the Overo, LED 3 continues blinking.
I am now wondering if modules can define irq_handlers. It is true that maybe I can live without the handler since the DMA blocks after writing the complete buffer and I can poll its state in an event function. Nevertheless I would like to know why the interrupt doesn't work.