@@ -3,6 +3,8 @@ Interrupts are asynchronous **hardware signals** that can be handled in software
...
@@ -3,6 +3,8 @@ Interrupts are asynchronous **hardware signals** that can be handled in software
Interrupts can be generated by different events, such as exceptions, timer counter overflows, incoming messages on a bus, GPIO level change etc...
Interrupts can be generated by different events, such as exceptions, timer counter overflows, incoming messages on a bus, GPIO level change etc...
All these events generate an **Interrupt REQuest (IRQ)**, which is managed in software by the corresponding **Interrupt Request Handler** (_IRQHandler_): a software function which is called every time the interrupt takes place.
All these events generate an **Interrupt REQuest (IRQ)**, which is managed in software by the corresponding **Interrupt Request Handler** (_IRQHandler_): a software function which is called every time the interrupt takes place.
An interesting thing to know is that in miosix interrupts can't be interrupted. This means that if the program is executing an interrupt, the **ISR** (_Interrupt Service Routine_) is a **critical section**, so all the code will be executed sequentially. If other interrupts happen while an **ISR** is being executed, these interrupts will stay in the pending state and will be applied a priority policy.
This page gives some quick information on how to use Interrupts with MIOSIX in STM32 boards.
This page gives some quick information on how to use Interrupts with MIOSIX in STM32 boards.