I am designing a system that needs a bunch of interrupts working. By now I have three possible source of interrupts working:
The USART6 works sending and receiving data from PC.
When SPI2 and TIM6 are not working the USART works with no problems, I can receive and send data prefectly.
The protocol between the PC and the system is this:
- I constantly send data packets to the PC until I receive an END data frame from it. At this moment I should stop sending packets and change to other state to make other tasks.
The problem is when I am using SPI and TIM interrupts: TIM is a timer to trigger and data over the SPI to another IC, while I need to send data to the PC using USART.
While the system sends data to PC all works OK, but when it tries to receive the END from the PC I go to an overrun error in the USART.
I am trying to configure the priority this way:
but still the same problem occurs.
I also tried to disable all the interrupt when entering the USART interrupt handler:
__set_BASEPRI(1 << (8 - __NVIC_PRIO_BITS));
__set_BASEPRI(0U); // remove the BASEPRI masking
but also the same problem.
I am not sure whether I need to configure anything else in the MCU to control the interrupts so I am stuck.
I need to say that I am not using the HAL from ST. I am using my own USART, SPI and TIM6 drivers.
Thanks in advanced,