17. Extended interrupts and event controller (EXTI)

17.1 EXTI introduction

The extended interrupts and event controller (EXTI) manages the individual CPU and system wake-up through configurable event inputs. It provides wake-up requests to the power control and generates an interrupt request to the CPU NVIC and events to the CPU event input. For the CPU, an additional event generation block (EVG) is needed to generate the CPU event signal.

The EXTI wake-up requests allow the system to be woken up from Stop modes.

The interrupt request and event request generation can be used also in Run modes. The EXTI also includes the EXTI mux I/O port selection.

17.2 EXTI main features

The EXTI main features are the following:

The configurable events have the following features:

17.3 EXTI functional description

17.3.1 EXTI block diagram

The EXTI consists of a register block accessed via an AHB interface, the event input trigger block, the masking block and EXTI mux as shown in Figure 63 .

The register block contains all the EXTI registers.

The event input trigger block provides event input edge trigger logic.

The masking block provides the event input distribution to the different wake-up, interrupt and event outputs, and their masking.

The EXTI mux provides the I/O port selection of the EXTI event signal.

Figure 63. EXTI block diagram

Figure 63. EXTI block diagram. The diagram shows the internal architecture of the EXTI block. It includes an AHB interface connected to Registers, which are also connected to an EXTI multiplexer (EXTI mux). The EXTI mux receives inputs from GPIO IOPort and Peripherals (Configurable event(15:0) and Wake-up). The EXTI mux output goes to an Event trigger, which then connects to a Masking block. The Masking block output goes to a Pulse block, which is part of the EVG (Event Generator). The EVG output (c_event) goes to the CPU (specifically rxev and nvic(x)). The EVG also receives inputs from the CPU (c_evt_exti and c_evt_rst) and a CPU clock (c_fclk). The EXTI block also has output signals: exti_ilac, exti[15:0] (To interconnect), sys_wake-up, c_wake-up (to PWR), and it_exti_per(y) (to CPU).
Figure 63. EXTI block diagram. The diagram shows the internal architecture of the EXTI block. It includes an AHB interface connected to Registers, which are also connected to an EXTI multiplexer (EXTI mux). The EXTI mux receives inputs from GPIO IOPort and Peripherals (Configurable event(15:0) and Wake-up). The EXTI mux output goes to an Event trigger, which then connects to a Masking block. The Masking block output goes to a Pulse block, which is part of the EVG (Event Generator). The EVG output (c_event) goes to the CPU (specifically rxev and nvic(x)). The EVG also receives inputs from the CPU (c_evt_exti and c_evt_rst) and a CPU clock (c_fclk). The EXTI block also has output signals: exti_ilac, exti[15:0] (To interconnect), sys_wake-up, c_wake-up (to PWR), and it_exti_per(y) (to CPU).

Table 135. EXTI signals

NameI/ODescription
AHB interfaceI/OEXTI register bus interface. When one event is configured to enable security, the AHB interface supports secure accesses.
hclkIAHB bus clock and EXTI system clock
Configurable event(y)IAsynchronous wake-up events from peripherals that do not have an associated interrupt and flag in the peripheral
exti_ilacOIllegal access event
IOPort(n)IGPIOs block I/O ports[15:0]
exti[15:0]OEXTI GPIO output port to trigger other peripherals
it_exti_per (y)OInterrupts to the CPU associated with configurable event (y)
c_evt_extiOHigh-level sensitive event output for CPU, synchronous to hclk
c_evt_rstIAsynchronous reset input to clear c_evt_exti
sys_wakeupOAsynchronous system wake-up request to PWR for ck_sys and hclk
c_wakeupOWake-up request to PWR for CPU, synchronous to hclk

Table 136. EVG signals

NameI/ODescription
c_fclkICPU free running clock
c_evt_inIHigh-level sensitive events input from EXTI, asynchronous to CPU clock
c_eventOEvent pulse, synchronous to CPU clock
c_evt_rstOEvent reset signal, synchronous to CPU clock

EXTI connections between peripherals and CPU

Some peripherals able to generate wake-up or interrupt events when the system is in Stop mode, are connected to the EXTI.

The EXTI configurable event interrupts are connected to the NVIC.

The dedicated EXTI/EVG CPU event is connected to the CPU rxeiv input.

The EXTI CPU wake-up signals are connected to the PWR and are used to wake up the system and the CPU sub- system bus clocks.

EXTI interrupt/event mapping

The EXTI lines are connected as shown in the table below.

Table 137. EXTI line connections

EXTI lineLine sourceLine type
0-15GPIOConfigurable
16PVD outputConfigurable
17COMP1 outputConfigurable
18COMP2 outputConfigurable
19V DDUSB voltage monitorConfigurable
20V DDIO2 voltage monitor (1)Configurable
21V DDA voltage monitor 1Configurable
22V DDA voltage monitor 2Configurable

1. VDDIO2 is not available on STM32U356/366

17.3.2 Event features control

The events features are controlled from register bits as follows:

17.3.3 EXTI configurable event input wake-up

The figure below is a detailed representation of the logic associated with configurable event inputs that wake up the CPU sub-system bus clocks and generate an EXTI pending flag and interrupt to the CPU, and/or a CPU wake-up event.

Figure 64. Configurable event trigger logic CPU wake-up

Figure 64: Configurable event trigger logic CPU wake-up. This block diagram shows the internal logic of the EXTI peripheral. On the left, an 'AHB interface' and 'hclk' clock are connected to a 'Peripheral interface' block. This block contains several registers: 'Falling trigger selection register', 'Rising trigger selection register', 'Software interrupt event register', 'CPU event mask register', 'CPU interrupt mask register', and 'Pending request register'. Below these registers, a 'Configurable event input(y)' is connected to an 'Asynchronous edge detection circuit rst'. This circuit's output goes to a 'Rising edge detect pulse generator' (which also takes 'hclk' and 'rst' as inputs) and to an AND gate. The AND gate also takes inputs from the 'Rising trigger selection register' and the 'CPU interrupt mask register'. The output of this AND gate is labeled 'CPU event(y) (1)'. This signal is ORed with 'Other CPU events(x,y)' to produce a signal that goes to a 'Rising edge detect rst' block (taking 'hclk' and 'rst' inputs). The output of this block is labeled 'c_evt_rst'. Another signal, 'c_evt_exti', is also input to this block. The outputs of the 'Rising edge detect rst' block go to an 'EVG' (Event Generator) block, which also takes 'ck_folk_c' as input. The EVG block produces a 'c_event' output. Below the AND gate, another AND gate takes inputs from the 'Software interrupt event register' and the 'CPU interrupt mask register'. Its output is ORed with 'Other CPU wake-ups' to produce 'CPU wake-up(y)'. This signal is then passed through a 'Synch' (synchronizer) block taking 'hclk' to produce 'c_wake-up'. Below this, another OR gate combines 'Other wake-ups' and 'wake-up(y)' to produce 'sys_wake-up'. The 'Pending request register' is connected to the 'CPU event(y) (1)' signal and the 'it_exti_per(y)' output. The diagram is labeled 'EXTI' at the bottom left and 'MSv62643V1' at the bottom right.
Figure 64: Configurable event trigger logic CPU wake-up. This block diagram shows the internal logic of the EXTI peripheral. On the left, an 'AHB interface' and 'hclk' clock are connected to a 'Peripheral interface' block. This block contains several registers: 'Falling trigger selection register', 'Rising trigger selection register', 'Software interrupt event register', 'CPU event mask register', 'CPU interrupt mask register', and 'Pending request register'. Below these registers, a 'Configurable event input(y)' is connected to an 'Asynchronous edge detection circuit rst'. This circuit's output goes to a 'Rising edge detect pulse generator' (which also takes 'hclk' and 'rst' as inputs) and to an AND gate. The AND gate also takes inputs from the 'Rising trigger selection register' and the 'CPU interrupt mask register'. The output of this AND gate is labeled 'CPU event(y) (1)'. This signal is ORed with 'Other CPU events(x,y)' to produce a signal that goes to a 'Rising edge detect rst' block (taking 'hclk' and 'rst' inputs). The output of this block is labeled 'c_evt_rst'. Another signal, 'c_evt_exti', is also input to this block. The outputs of the 'Rising edge detect rst' block go to an 'EVG' (Event Generator) block, which also takes 'ck_folk_c' as input. The EVG block produces a 'c_event' output. Below the AND gate, another AND gate takes inputs from the 'Software interrupt event register' and the 'CPU interrupt mask register'. Its output is ORed with 'Other CPU wake-ups' to produce 'CPU wake-up(y)'. This signal is then passed through a 'Synch' (synchronizer) block taking 'hclk' to produce 'c_wake-up'. Below this, another OR gate combines 'Other wake-ups' and 'wake-up(y)' to produce 'sys_wake-up'. The 'Pending request register' is connected to the 'CPU event(y) (1)' signal and the 'it_exti_per(y)' output. The diagram is labeled 'EXTI' at the bottom left and 'MSv62643V1' at the bottom right.
  1. 1. Only for the input events that support CPU rxeu generation c_event .

The software interrupt event register allows configurable events to be triggered by software, writing the corresponding register bit, whatever the edge selection setting.

The configurable event active trigger edge (or both edges) is selected and enabled in the rising/falling edge selection registers.

The CPU has its dedicated wake-up (interrupt) mask register and a dedicated event mask registers. When the event is enabled, it is generated to the CPU. All events for the CPU are ORed together into a single CPU event signal. The event pending registers (EXTI_RPR1 and EXTI_FPR1) are not set for an unmasked CPU event.

The configurable events have unique interrupt pending request registers. The pending register is only set for an unmasked interrupt. Each configurable event provides a common interrupt to the CPU. The configurable event interrupts must be acknowledged by software in the EXTI_RPR1 and/or EXTI_FPR1 registers.

When a CPU wake-up (interrupt) or CPU event is enabled, the asynchronous edge detection circuit is reset by the clocked delay and rising edge detect pulse generator. This guarantees that the EXTI hclk clock is woken up before the asynchronous edge detection circuit is reset.

Note: A detected configurable event interrupt pending request can be cleared by the CPU with the correct access permission. The system is not able to enter into low-power modes as long as an interrupt pending request is active.

17.3.4 EXTI mux selection

The EXTI mux allows the selection of GPIOs as interrupts and wake-up. GPIOs are connected via 16 EXTI mux lines to the first 16 EXTI events as configurable event.

The selection of GPIO port as EXTI mux output is controlled in the EXTI_EXTICRx.

Figure 65. EXTI mux GPIO selection

Diagram of EXTI mux GPIO selection showing three multiplexers. The first multiplexer (EXTI_EXTICR1.EXTI0) selects between PA0, PB0, PC0, and Px0 to output EXTI0. The second multiplexer (EXTI_EXTICR1.EXTI1) selects between PA1, PB1, PC1, and Px1 to output EXTI1. The third multiplexer (EXTI_EXTICR4.EXTI15) selects between PA15, PB15, PC15, and Px15 to output EXTI15. A dashed line connects EXTI1 to EXTI15. The diagram is labeled MSv44726V1.
Diagram of EXTI mux GPIO selection showing three multiplexers. The first multiplexer (EXTI_EXTICR1.EXTI0) selects between PA0, PB0, PC0, and Px0 to output EXTI0. The second multiplexer (EXTI_EXTICR1.EXTI1) selects between PA1, PB1, PC1, and Px1 to output EXTI1. The third multiplexer (EXTI_EXTICR4.EXTI15) selects between PA15, PB15, PC15, and Px15 to output EXTI15. A dashed line connects EXTI1 to EXTI15. The diagram is labeled MSv44726V1.

The EXTI mux outputs are available as output signals from the EXTI to trigger other peripherals, whatever the masking in EXTI_IMR1 and EXTI_EM1 registers.

17.3.5 EXTI functional behavior

The configurable events are enabled by enabling at least one of the trigger edges.

Once an event input is enabled, the CPU wake-up generation is conditioned by the CPU interrupt mask and CPU event mask.

Table 138. Masking functionality

CPU interrupt enable (in EXTI_IMR.IMn)CPU event enable (in EXTI_EM1.EMn)Configurable event inputs (in EXTI_RPR.RPIFn and EXTI_FPR.FPIFn)Exti(n) interrupt (1)CPU eventCPU wake-up
00NoMaskedMaskedMasked
1NoMaskedYesYes
10Status latchedYesMaskedYes (2)
1Status latchedYesYesYes

1. The single exti(n) interrupt goes to the CPU. If no interrupt is required for CPU(m), the exti(n) interrupt must be masked in the CPU NVIC.

2. Only if CPU interrupt is enabled in EXTI_IMR1.IMn.

For configurable event inputs, when the enabled edges occur on the event input, an event request is generated. When the associated CPU interrupt is unmasked, the corresponding pending bits EXTI_RPR1.RPIFn and/or EXTI_FPR1.FPIFn is/are set: the CPU sub-system

is woken up and the CPU interrupt signal is activated. The EXTI_RPR1.RPIFn and/or EXTI_FPR1.FPIFn pending bits must be cleared by software writing it to 1. This action clears the CPU interrupt.

For the configurable event inputs, an event request can be generated by software when writing a 1 in the software interrupt/event register EXTI_SWIER1, allowing the generation of a rising edge on the event. The rising edge event pending bit is set in EXTI_RPR1, whatever the setting in EXTI_RTSR1.

17.3.6 EXTI event protection

The EXTI is able to protect event register bits from being modified by nonsecure and unprivileged accesses. The protection is individually activated per input event via the register bits in EXTI_SECCFGR1 and EXTI_PRIVCFGR1. At EXTI level, the protection consists in preventing the following unauthorized write access:

Table 139. Register protection overview

Register nameAccess typeProtection (1)(2)
EXTI_RTSR1RWSecurity and privilege can be bit-wise enabled in EXTI_SECCFGR1 and EXTI_PRIVCFGR1.
EXTI_FTSR1RW
EXTI_SWIER1RW
EXTI_RPR1RW
EXTI_FPR1RW
EXTI_SECCFGR1RWAlways secure. Privilege can be bit-wise enabled in EXTI_PRIVCFGR1.
EXTI_PRIVCFGR1RWAlways privilege. Security can be bit-wise enabled in EXTI_SECCFGR1.
EXTI_EXTICRxRWSecurity and privilege can be bit-wise enabled in EXTI_SECCFGR1 and EXTI_PRIVCFGR1.
EXTI_LOCKRRWAlways secure.
EXTI_IMR1RWSecurity and privilege can be bit-wise enabled in EXTI_SECCFGR1 and EXTI_PRIVCFGR1.
EXTI_EMR1RW

1. Privilege is enabled with the individual Input event (EXTI_PRIVCFGR1 register).

2. Security is enabled with the individual input event (EXTI_SECCFGR1 register).

EXTI security protection

When security is enabled for an input event, the associated input event configuration and control bits can only be modified and read by a secure access. A nonsecure write access is discarded and a read returns 0.

When input events are nonsecure, the security is disabled. The associated input event configuration and control bits can be modified and read by a secure access and nonsecure access.

The security configuration in EXTI_SECCFGR1 can be globally locked after reset by EXTI_LOCKR.LOCK.

EXTI privilege protection

When privilege is enabled for an input event, the associated input event configuration and control bits can only be modified and read by a privileged access. An unprivileged write access is discarded and a read returns 0.

When input events are unprivileged, the privilege is disabled. The associated input event configuration and control bits can be modified and read by a privileged access and unprivileged access.

The privileged configuration in EXTI_PRIVCFGR1 can be globally locked after reset by EXTI_LOCKR.LOCK.

17.4 EXTI registers

All registers can be accessed with word (32-bit), half-word (16-bit), and byte (8-bit) access.

17.4.1 EXTI rising trigger selection register (EXTI_RTSR1)

Address offset: 0x000

Reset value: 0x0000 0000

This register contains only bits for configurable events.

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.RT22RT21RT20RT19RT18RT17RT16
rwrwrwrwrwrwrw
1514131211109876543210
RT15RT14RT13RT12RT11RT10RT9RT8RT7RT6RT5RT4RT3RT2RT1RT0
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:23 Reserved, must be kept at reset value.

Bits 22:0 RTi : Rising trigger event configuration bit of configurable event input \( i^{(1)} \) ( \( i = 22 \) to 0)

When EXTI_SECCFGR.SECi is disabled, RTi can be accessed with nonsecure and secure access.

When EXTI_SECCFGR.SECi is enabled, RTi can only be accessed with secure access. Nonsecure write to this bit \( i \) is discarded and nonsecure read returns 0.

When EXTI_PRIVCFGR.PRIVi is disabled, RTi can be accessed with unprivileged and privileged access.

When EXTI_PRIVCFGR.PRIVi is enabled, RTi can only be accessed with privileged access. Unprivileged write to this bit \( i \) is discarded. Unprivileged read returns 0.

0: Rising trigger disabled (for event and interrupt) for input line

1: Rising trigger enabled (for event and interrupt) for input line

  1. 1. The configurable event inputs are edge triggered. No glitch must be generated on these inputs. If a rising edge on the configurable event input occurs during writing of the register, the associated pending bit is not set. Rising and falling edge triggers can be set for the same configurable event input. In this case, both edges generate a trigger.

17.4.2 EXTI falling trigger selection register (EXTI_FTSR1)

Address offset: 0x004

Reset value: 0x0000 0000

This register contains only bits for configurable events.

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.FT22FT21FT20FT19FT18FT17FT16
1514131211109876543210
FT15FT14FT13FT12FT11FT10FT9FT8FT7FT6FT5FT4FT3FT2FT1FT0
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:23 Reserved, must be kept at reset value.

Bits 22:0 FTi : Falling trigger event configuration bit of configurable event input i (1) (i = 22 to 0)

When EXTI_SECCFGR.SECi is disabled, FTi can be accessed with nonsecure and secure access.

When EXTI_SECCFGR.SECi is enabled, FTi can only be accessed with secure access.

Nonsecure write to this FTi is discarded. Nonsecure read returns 0.

When EXTI_PRIVCFGR.PRIVi is disabled, FTi can be accessed with unprivileged and privileged access.

When EXTI_PRIVCFGR.PRIVi is enabled, FTi can only be accessed with privileged access.

Unprivileged write to this FTi is discarded, unprivileged read returns 0.

0: Falling trigger disabled (for event and interrupt) for input line

1: Falling trigger enabled (for event and interrupt) for input line.

  1. 1. The configurable event inputs are edge triggered. No glitch must be generated on these inputs. If a falling edge on the configurable event input occurs during writing of the register, the associated pending bit is not set. Rising and falling edge triggers can be set for the same configurable event input. In this case, both edges generate a trigger.

17.4.3 EXTI software interrupt event register (EXTI_SWIER1)

Address offset: 0x008

Reset value: 0x0000 0000

This register contains only bits for configurable events.

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.SWI22SWI21SWI20SWI19SWI18SWI17SWI16
1514131211109876543210
SWI15SWI14SWI13SWI12SWI11SWI10SWI9SWI8SWI7SWI6SWI5SWI4SWI3SWI2SWI1SWI0
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:23 Reserved, must be kept at reset value.

Bits 22:0 SWIi : Software interrupt on event i (i = 22 to 0)

When EXTI_SECCFGR.SECi is disabled, SWIi can be accessed with nonsecure and secure access.

When EXTI_SECCFGR.SECi is enabled, SWIi can only be accessed with secure access.

Nonsecure write to this SWIi is discarded. Nonsecure read returns 0.

When EXTI_PRIVCFGR.PRIVI is disabled, SWIi can be accessed with unprivileged and privileged access.

When EXTI_PRIVCFGR.PRIVI is enabled, SWIi can only be accessed with privileged access. Unprivileged write to this SWIi is discarded, unprivileged read returns 0.

A software interrupt is generated independent from the setting in EXTI_RTSR and EXTI_FTSR. It always returns 0 when read.

0: Writing 0 has no effect.

1: Writing 1 triggers a rising edge event on event i. This bit is auto cleared by hardware.

17.4.4 EXTI rising edge pending register (EXTI_RPR1)

Address offset: 0x00C

Reset value: 0x0000 0000

This register contains only bits for configurable events.

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.RPIF22RPIF21RPIF20RPIF19RPIF18RPIF17RPIF16
rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1
1514131211109876543210
RPIF15RPIF14RPIF13RPIF12RPIF11RPIF10RPIF9RPIF8RPIF7RPIF6RPIF5RPIF4RPIF3RPIF2RPIF1RPIF0
rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1

Bits 31:23 Reserved, must be kept at reset value.

Bits 22:0 RPIFi : Configurable event input i rising edge pending bit (i = 22 to 0)

When EXTI_SECCFGR.SECi is disabled, RPIFi can be accessed with nonsecure and secure access.

When EXTI_SECCFGR.SECi is enabled, RPIFi can only be accessed with secure access.

Nonsecure write to this RPIFi is discarded. Nonsecure read returns 0.

When EXTI_PRIVCFGR.PRIVI is disabled, RPIFi can be accessed with unprivileged and privileged access.

When EXTI_PRIVCFGR.PRIVI is enabled, RPIFi can only be accessed with privileged access. Unprivileged write to this RPIFi is discarded, unprivileged read returns 0.

This bit is set when the rising edge event or an EXTI_SWIER software trigger arrives on the configurable event line. This bit is cleared by writing 1 to it.

0: No rising edge trigger request occurred.

1: Rising edge trigger request occurred.

17.4.5 EXTI falling edge pending register (EXTI_FPR1)

Address offset: 0x010

Reset value: 0x0000 0000

This register contains only bits for configurable events.

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.FPIF22FPIF21FPIF20FPIF19FPIF18FPIF17FPIF16
rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1
1514131211109876543210
FPIF15FPIF14FPIF13FPIF12FPIF11FPIF10FPIF9FPIF8FPIF7FPIF6FPIF5FPIF4FPIF3FPIF2FPIF1FPIF0
rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1rc_w1

Bits 31:23 Reserved, must be kept at reset value.

Bits 22:0 FPIFi : configurable event inputs i falling edge pending bit (i = 22 to 0)

When EXTI_SECCFGR.SECi is disabled, FPIFi can be accessed with nonsecure and secure access.

When EXTI_SECCFGR.SECi is enabled, FPIFi can only be accessed with secure access.

Nonsecure write to this FPIFi is discarded, nonsecure read returns 0.

When EXTI_PRIVCFGR.PRIVi is disabled, FPIFi can be accessed with unprivileged and privileged access.

When EXTI_PRIVCFGR.PRIVi is enabled, FPIFi can only be accessed with privileged access. Unprivileged write to this FPIFi is discarded, unprivileged read returns 0.

This bit is set when the falling edge event arrives on the configurable event line. This bit is cleared by writing 1 to it.

0: No falling edge trigger request occurred

1: Falling edge trigger request occurred

17.4.6 EXTI security configuration register (EXTI_SECCFGR1)

Address offset: 0x014

Reset value: 0x0000 0000

This register provides write access security. A nonsecure write access is ignored and causes the generation of an illegal access event. A nonsecure read returns the register data. This register contains only bits for security capable input events.

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.SEC22SEC21SEC20SEC19SEC18SEC17SEC16
rwrwrwrwrwrwrw
1514131211109876543210
SEC15SEC14SEC13SEC12SEC11SEC10SEC9SEC8SEC7SEC6SEC5SEC4SEC3SEC2SEC1SEC0
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:23 Reserved, must be kept at reset value.

Bits 22:0 SECi : Security enable on event input i (i = 22 to 0)

When EXTI_PRIVCFG.PRIVi is disabled, SECi can be accessed with privileged and unprivileged access.
When EXTI_PRIVCFG.PRIVi is enabled, SECi can only be written with privileged access. Unprivileged write to this SECi is discarded.

0: Event security disabled (nonsecure)

1: Event security enabled (secure)

17.4.7 EXTI privilege configuration register (EXTI_PRIVCFG1)

Address offset: 0x018

Reset value: 0x0000 0000

This register provides privileged write access protection. An unprivileged read returns the register data. This register contains only bits for security capable input events.

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.PRIV22PRIV21PRIV20PRIV19PRIV18PRIV17PRIV16
rwrwrwrwrwrwrw
1514131211109876543210
PRIV15PRIV14PRIV13PRIV12PRIV11PRIV10PRIV9PRIV8PRIV7PRIV6PRIV5PRIV4PRIV3PRIV2PRIV1PRIV0
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:23 Reserved, must be kept at reset value.

Bits 22:0 PRIVi : Security enable on event input i ( i = 22 to 0)

When EXTI_SECCFG.SECi is disabled, PRIVi can be accessed with secure and nonsecure access.

When EXTI_SECCFG.SECi is enabled, PRIVi can only be written with secure access.

Nonsecure write to this PRIVi is discarded.

0: Event privilege disabled (unprivileged)

1: Event privilege enabled (privileged)

17.4.8 EXTI external interrupt selection register (EXTI_EXTICRx)

Address offset: 0x060 + 0x4 * ( x - 1) ( x = 1 to 4)

Reset value: 0x0000 0000

31302928272625242322212019181716
EXTI{4*(x-1)+3}[7:0]EXTI{4*(x-1)+2}[7:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw
1514131211109876543210
EXTI{4*(x-1)+1}[7:0]EXTI{4*(x-1)}[7:0]
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw
Bits 31:24 EXTI{4 * (x - 1) + 3}[7:0]: EXTI{4 * (x - 1) + 3} GPIO port selection

These bits are written by software to select the source input for EXTI{4 * (x - 1) + 3} external interrupt.

When EXTI_SECCFGR.SEC{4 * (x - 1) + 3} is disabled, this bitfield can be accessed with nonsecure and secure access.

When EXTI_SECCFGR.SEC{4 * (x - 1) + 3} is enabled, this bitfield can only be accessed with secure access. Nonsecure write is discarded. Nonsecure read returns 0.

When EXTI_PRIVCFGR.PRIV{4 * (x - 1) + 3} is disabled, this bitfield can be accessed with privileged and unprivileged access.

When EXTI_PRIVCFGR.PRIV{4 * (x - 1) + 3} is enabled, this bitfield can only be accessed with privileged access. Unprivileged write to this bit is discarded.

0x00: PA[{4 * (x - 1) + 3}] pin

0x01: PB[{4 * (x - 1) + 3}] pin

0x02: PC[{4 * (x - 1) + 3}] pin

0x03: PD[{4 * (x - 1) + 3}] pin

0x04: PE[{4 * (x - 1) + 3}] pin

0x05: PF[{4 * (x - 1) + 3}] pin

0x06: PG[{4 * (x - 1) + 3}] pin

0x07: PH[{4 * (x - 1) + 3}] pin

Others: Reserved

Note: Port F is only available on STM32U3B5/3C5.

Port G is not available on STM32U356/366.

Bits 23:16 EXTI{4 * (x - 1) + 2}[7:0]: EXTI{4 * (x - 1) + 2} GPIO port selection

These bits are written by software to select the source input for EXTI{4 * (x - 1) + 2} external interrupt.

When EXTI_SECCFGR.SEC{4 * (x - 1) + 2} is disabled, this bitfield can be accessed with nonsecure and secure access.

When EXTI_SECCFGR.SEC{4 * (x - 1) + 2} is enabled, this bitfield can only be accessed with secure access. Nonsecure write is discarded. Nonsecure read returns 0.

When EXTI_PRIVCFGR.PRIV{4 * (x - 1) + 2} is disabled, this bitfield can be accessed with privileged and unprivileged access.

When EXTI_PRIVCFGR.PRIV{4 * (x - 1) + 2} is enabled, this bitfield can only be accessed with privileged access. Unprivileged write to this bit is discarded.

0x00: PA[{4 * (x - 1) + 2}] pin

0x01: PB[{4 * (x - 1) + 2}] pin

0x02: PC[{4 * (x - 1) + 2}] pin

0x03: PD[{4 * (x - 1) + 2}] pin

0x04: PE[{4 * (x - 1) + 2}] pin

0x05: PF[{4 * (x - 1) + 2}] pin

0x06: PG[{4 * (x - 1) + 2}] pin

0x07: PH[{4 * (x - 1) + 2}] pin

Others: Reserved

Note: Port F is only available on STM32U3B5/3C5.

Port G is not available on STM32U356/366.

Bits 15:8 EXTI{4 * (x - 1) + 1}[7:0]: EXTI{4 * (x - 1) + 1} GPIO port selection

These bits are written by software to select the source input for EXTI{4 * (x - 1) + 1} external interrupt.

When EXTI_SECCFGR.SEC{4 * (x - 1) + 1} is disabled, this bitfield can be accessed with nonsecure and secure access.

When EXTI_SECCFGR.SEC{4 * (x - 1) + 1} is enabled, this bitfield can only be accessed with secure access. Nonsecure write is discarded. Nonsecure read returns 0.

When EXTI_PRIVCFGR.PRIV{4 * (x - 1) + 1} is disabled, this bitfield can be accessed with privileged and unprivileged access.

When EXTI_PRIVCFGR.PRIV{4 * (x - 1) + 1} is enabled, this bitfield can only be accessed with privileged access. Unprivileged write to this bit is discarded.

0x00: PA[{4 * (x - 1) + 1}] pin

0x01: PB[{4 * (x - 1) + 1}] pin

0x02: PC[{4 * (x - 1) + 1}] pin

0x03: PD[{4 * (x - 1) + 1}] pin

0x04: PE[{4 * (x - 1) + 1}] pin

0x05: PF[{4 * (x - 1) + 1}] pin

0x06: PG[{4 * (x - 1) + 1}] pin

0x07: PH[{4 * (x - 1) + 1}] pin

Others: Reserved

Note: Port F is only available on STM32U3B5/3C5.

Port G is not available on STM32U356/366.

Bits 7:0 EXTI{4 * (x - 1)}[7:0]: EXTI{4 * (x - 1)} GPIO port selection

These bits are written by software to select the source input for EXTI{4 * (x - 1)} external interrupt.

When EXTI_SECCFGR.SEC{4 * (x - 1)} is disabled, this bitfield can be accessed with nonsecure and secure access.

When EXTI_SECCFGR.SEC{4 * (x - 1)} is enabled, this bitfield can only be accessed with secure access. Nonsecure write is discarded. Nonsecure read returns 0.

When EXTI_PRIVCFGR.PRIV{4 * (x - 1)} is disabled, this bitfield can be accessed with privileged and unprivileged access.

When EXTI_PRIVCFGR.PRIV{4 * (x - 1)} is enabled, this bitfield can only be accessed with privileged access. Unprivileged write to this bit is discarded.

0x00: PA[{4 * (x - 1)}] pin

0x01: PB[{4 * (x - 1)}] pin

0x02: PC[{4 * (x - 1)}] pin

0x03: PD[{4 * (x - 1)}] pin

0x04: PE[{4 * (x - 1)}] pin

0x05: PF[{4 * (x - 1)}] pin

0x06: PG[{4 * (x - 1)}] pin

0x07: PH[{4 * (x - 1)}] pin

Others: Reserved

Note: Port F is only available on STM32U3B5/3C5.

Port G is not available on STM32U356/366.

17.4.9 EXTI lock register (EXTI_LOCKR)

Address offset: 0x070

Reset value: 0x0000 0000

This register provides write access security: a nonsecure write access is ignored, a read access returns zero data, and both generates an illegal access event.

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.
1514131211109876543210
Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.Res.LOCK
rs

Bits 31:1 Reserved, must be kept at reset value.

Bit 0 LOCK : Global security and privilege configuration registers (EXTI_SECCFGR and EXTI_PRIVCFGR) lock

This bit is written once after reset.

0: Security and privilege configuration open, can be modified.

1: Security and privilege configuration locked, can no longer be modified.

17.4.10 EXTI CPU wake-up with interrupt mask register (EXTI_IMR1)

Address offset: 0x080

Reset value: 0x0000 0000

This register contains bits for configurable events.

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.IM22IM21IM20IM19IM18IM17IM16
rwrwrwrwrwrwrw
1514131211109876543210
IM15IM14IM13IM12IM11IM10IM9IM8IM7IM6IM5IM4IM3IM2IM1IM0
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:23 Reserved, must be kept at reset value.

Bits 22:0 IMi : CPU wake-up with interrupt mask on event input i (1) (i = 22 to 0)

When EXTI_SECCFGR.SECi is disabled, IMi can be accessed with nonsecure and secure access.

When EXTI_SECCFGR.SECi is enabled, IMi can only be accessed with secure access.

Nonsecure write to this bit is discarded. Nonsecure read returns 0.

When EXTI_PRIVCFGR.PRIVI is disabled, IMi can be accessed with privileged and unprivileged access.

When EXTI_PRIVCFGR.PRIVI is enabled, IMi can only be accessed with privileged access.

Unprivileged write to this bit is discarded.

0: Wake-up with interrupt request from input event i is masked.

1: Wake-up with interrupt request from input event i is unmasked.

  1. 1. The reset value for configurable event inputs is set to 0 in order to disable the interrupt by default.

17.4.11 EXTI CPU wake-up with event mask register (EXTI_EMR1)

Address offset: 0x084

Reset value: 0x0000 0000

31302928272625242322212019181716
Res.Res.Res.Res.Res.Res.Res.Res.Res.EM22EM21EM20EM19EM18EM17EM16
rwrwrwrwrwrwrw
1514131211109876543210
EM15EM14EM13EM12EM11EM10EM9EM8EM7EM6EM5EM4EM3EM2EM1EM0
rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw

Bits 31:23 Reserved, must be kept at reset value.

Bits 22:0 EMi : CPU wake-up with event generation mask on event input i (i = 22 to 0)

When EXTI_SECCFGR.SECi is disabled, EMi can be accessed with nonsecure and secure access.

When EXTI_SECCFGR.SECi is enabled, EMi can only be accessed with secure access.

Nonsecure write to this EMi is discarded. Nonsecure read returns 0.

When EXTI_PRIVCFGR.PRIVi is disabled, EMi can be accessed with privileged and unprivileged access.

When EXTI_PRIVCFGR.PRIVi is enabled, EMi can only be accessed with privileged access. Unprivileged write to this bit is discarded.

0: Wake-up with event generation from line i is masked.

1: Wake-up with event generation from line i is unmasked.

17.4.12 EXTI register map

Table 140. EXTI register map and reset values

OffsetRegister name313029282726252423222120191817161514131211109876543210
0x000EXTI_RTSR1Res.Res.Res.Res.Res.Res.Res.Res.Res.RT22RT21RT20RT19RT18RT17RT16RT15RT14RT13RT12RT11RT10RT9RT8RT7RT6RT5RT4RT3RT2RT1RT0
Reset value00000000000000000000000
0x004EXTI_FTSR1Res.Res.Res.Res.Res.Res.Res.Res.Res.FT22FT21FT20FT19FT18FT17FT16FT15FT14FT13FT12FT11FT10FT9FT8FT7FT6FT5FT4FT3FT2FT1FT0
Reset value00000000000000000000000
0x008EXTI_SWIER1Res.Res.Res.Res.Res.Res.Res.Res.Res.SWI22SWI21SWI20SWI19SWI18SWI17SWI16SWI15SWI14SWI13SWI12SWI11SWI10SWI9SWI8SWI7SWI6SWI5SWI4SWI3SWI2SWI1SWI0
Reset value00000000000000000000000
0x00CEXTI_RPR1Res.Res.Res.Res.Res.Res.Res.Res.Res.RPIF22RPIF21RPIF20RPIF19RPIF18RPIF17RPIF16RPIF15RPIF14RPIF13RPIF12RPIF11RPIF10RPIF9RPIF8RPIF7RPIF6RPIF5RPIF4RPIF3RPIF2RPIF1RPIF0
Reset value00000000000000000000000
0x010EXTI_FPR1Res.Res.Res.Res.Res.Res.Res.Res.Res.FPIF22FPIF21FPIF20FPIF19FPIF18FPIF17FPIF16FPIF15FPIF14FPIF13FPIF12FPIF11FPIF10FPIF9FPIF8FPIF7FPIF6FPIF5FPIF4FPIF3FPIF2FPIF1FPIF0
Reset value00000000000000000000000
0x014EXTI_SECCFGR1Res.Res.Res.Res.Res.Res.Res.Res.Res.SEC22SEC21SEC20SEC19SEC18SEC17SEC16SEC15SEC14SEC13SEC12SEC11SEC10SEC9SEC8SEC7SEC6SEC5SEC4SEC3SEC2SEC1SEC0
Reset value00000000000000000000000
0x018EXTI_PRIVCFGR1Res.Res.Res.Res.Res.Res.Res.Res.Res.PRIV22PRIV21PRIV20PRIV19PRIV18PRIV17PRIV16PRIV15PRIV14PRIV13PRIV12PRIV11PRIV10PRIV9PRIV8PRIV7PRIV6PRIV5PRIV4PRIV3PRIV2PRIV1PRIV0
Reset value00000000000000000000000
0x020-0x05CReservedReserved

Table 140. EXTI register map and reset values (continued)

OffsetRegister name313029282726252423222120191817161514131211109876543210
0x060EXTI_EXTICR1EXTI3[7:0]EXTI2[7:0]EXTI1[7:0]EXTI0[7:0]
Reset value00000000000000000000000000000000
0x064EXTI_EXTICR2EXTI7[7:0]EXTI6[7:0]EXTI5[7:0]EXTI4[7:0]
Reset value00000000000000000000000000000000
0x068EXTI_EXTICR3EXTI11[7:0]EXTI10[7:0]EXTI9[7:0]EXTI8[7:0]
Reset value00000000000000000000000000000000
0x06CEXTI_EXTICR4EXTI15[7:0]EXTI14[7:0]EXTI13[7:0]EXTI12[7:0]
Reset value00000000000000000000000000000000
0x070EXTI_LOCKRResResResResResResResResResResResResResResResResResResResResResResResResResResResResResResResLOCK
Reset value0
0x074-
0x07C
ReservedReserved
0x080EXTI_IMR1ResResResResResResResResResIM22IM21IM20IM19IM18IM17IM16IM15IM14IM13IM12IM11IM10IM9IM8IM7IM6IM5IM4IM3IM2IM1IM0
Reset value00000000000000000000000
0x084EXTI_EMR1ResResResResResResResResResEM22EM21EM20EM19EM18EM17EM16EM15EM14EM13EM12EM11EM10EM9EM8EM7EM6EM5EM4EM3EM2EM1EM0
Reset value00000000000000000000000

Refer to Section 2.3 for the register boundary addresses.