aboutsummaryrefslogtreecommitdiffstats
path: root/os/hal/ports/STM32/LLD/EXTIv1/notes.txt
blob: 10eda50d48130e50e1fd67594c5b2eb62d1b9090 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
STM32 EXT driver implementation through EXTI unit.

There are several kind of EXTI lines:

1) GPIO lines. Always in range 0..15, always handled by the EXT driver.
2) Configurable peripheral events not shared, always handled by the EXT driver.
3) Configurable peripheral events shared with other, non EXTI, interrupts.
   The EXTI driver declares the ISR and has to call the IRQ handler of the
   other driver.
4) Direct lines (1 in IMR register after reset). The EXTI driver never touches
   the default configuration for direct lines and does not declare ISRs.
5) Unused lines. The EXTI driver does not declare ISRs.

The file registry must export:
STM32_EXTI_NUM_LINES - Range of configurable lines, it can have holes of
                       unused or direct lines. Configurable line numbers go
                       from 0 to STM32_EXTI_NUM_LINES-1.
STM32_EXTI_IMR_MASK  - Direct lines and unused lines marked as 1 in this
                       mask, configurable lines marked as 0.
STM32_EXTI_IMR2_MASK - Optional, for lines 32...63.

ISRs are not declared inside the driver, each sub-family must have its own
ext_lld_isr.h and ext_lld_isr.c files.