Multiprotocol wireless 32-bit MCU Arm®-based Cortex®-M4

ST Multiprotocol wireless 32-bit MCU Arm®-based Cortex®-M4, STM32WB30CE, STM32WB50CG Reference guide

  • Hello! I am an AI chatbot trained to assist you with the ST Multiprotocol wireless 32-bit MCU Arm®-based Cortex®-M4 Reference guide. I’ve already reviewed the document and can help you find the information you need or explain it in simple terms. Just ask your questions, and providing more details will help me assist you more effectively!
August 2021 RM0471 Rev 5 1/1202
1
RM0471
Reference manual
Multiprotocol wireless 32-bit MCU Arm®-based Cortex®-M4
with FPU, Bluetooth® Low Energy or 802.15.4 radio solution
Introduction
This reference manual is addressed to application developers. It provides complete
information on how to use the STM32WB50CG/30CE microcontroller memory and
peripherals.
These multi-protocol wireless and ultra-low-power devices embed a powerful and
ultra-low-power radio compliant with the Bluetooth® Low Energy SIG specification 5.2 and
with IEEE 802.15.4-2011. They contain a dedicated Arm® Cortex®-M0+ for performing the
real-time low layer operation.
The STM32WB50CG provide value line microcontrollers with 1 Mbyte Flash memory and
128 Kbytes SRAM.
The STM32WB30CE provide value line microcontrollers with 512 Kbyte Flash memory and
96 Kbytes SRAM.
Related documents
Available from STMicroelectronics web site www.st.com:
ï‚·STM32WB50CG/30CE datasheet
ï‚·STM32WB50CG/30CE errata sheet
For information on the Arm® Cortex®-M4 and Cortex®-M0+ cores refer, respectively, to the
corresponding technical reference manuals, available from the www.arm.com website.
For information on 802.15.4 refer to the IEEE website (www.ieee.org).
For information on Bluetooth® refer to www.bluetooth.com.
www.st.com
Contents RM0471
2/1202 RM0471 Rev 5
Contents
1 Documentation conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
1.1 General information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
1.2 List of abbreviations for registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
1.3 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
1.4 Availability of peripherals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2 System and memory overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.1 System architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.1.1 S0: CPU1 (CPU1 Cortex®-M4) I-bus . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.1.2 S1: CPU1 (CPU1 Cortex®-M4) D-bus . . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.1.3 S2: CPU1 (CPU1 Cortex®-M4) S-bus . . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.1.4 S3: CPU2 (Cortex® -M0+) S-bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.1.5 S4: DMA-bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.1.6 S6: Radio system-bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.1.7 BusMatrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.2 Memory organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
2.2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
2.2.2 Memory map and register boundary addresses . . . . . . . . . . . . . . . . . . 56
2.2.3 Bit banding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
2.3 Boot configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
2.4 CPU2 boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
2.5 CPU2 SRAM fetch disable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3 Embedded Flash memory (FLASH) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.2 FLASH main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.3 FLASH functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.3.1 Flash memory organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.3.2 Empty check . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.3.3 Error code correction (ECC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.3.4 Read access latency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.3.5 Adaptive real-time memory accelerator (ART Accelerator) . . . . . . . . . . 67
3.3.6 Flash memory program and erase operations . . . . . . . . . . . . . . . . . . . . 70
RM0471 Rev 5 3/1202
RM0471 Contents
36
3.3.7 Flash main memory erase sequences . . . . . . . . . . . . . . . . . . . . . . . . . . 71
3.3.8 Flash main memory programming sequences . . . . . . . . . . . . . . . . . . . . 73
3.4 FLASH option bytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
3.4.1 Option bytes description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
3.4.2 Option bytes programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
3.5 FLASH UID64 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
3.6 Flash memory protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
3.6.1 Read protection (RDP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
3.6.2 Proprietary code readout protection (PCROP) . . . . . . . . . . . . . . . . . . . 92
3.6.3 Write protection (WRP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
3.6.4 CPU2 security (ESE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
3.7 FLASH program/erase suspension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
3.8 FLASH interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
3.9 Register access protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
3.10 FLASH registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
3.10.1 Flash memory access control register (FLASH_ACR) . . . . . . . . . . . . . 97
3.10.2 Flash memory key register (FLASH_KEYR) . . . . . . . . . . . . . . . . . . . . . 98
3.10.3 Flash memory option key register (FLASH_OPTKEYR) . . . . . . . . . . . . 98
3.10.4 Flash memory status register (FLASH_SR) . . . . . . . . . . . . . . . . . . . . . 99
3.10.5 Flash memory control register (FLASH_CR) . . . . . . . . . . . . . . . . . . . . 100
3.10.6 Flash memory ECC register (FLASH_ECCR) . . . . . . . . . . . . . . . . . . . 102
3.10.7 Flash memory option register (FLASH_OPTR) . . . . . . . . . . . . . . . . . . 103
3.10.8 Flash memory PCROP zone A start address register
(FLASH_PCROP1ASR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
3.10.9 Flash memory PCROP zone A end address register
(FLASH_PCROP1AER) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
3.10.10 Flash memory WRP area A address register (FLASH_WRP1AR) . . . 106
3.10.11 Flash memory WRP area B address register (FLASH_WRP1BR) . . . 107
3.10.12 Flash memory PCROP zone B start address register
(FLASH_PCROP1BSR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
3.10.13 Flash memory PCROP zone B end address register
(FLASH_PCROP1BER) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
3.10.14 Flash memory IPCC mailbox data buffer address register
(FLASH_IPCCBR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
3.10.15 Flash memory CPU2 access control register (FLASH_C2ACR) . . . . . 108
3.10.16 Flash memory CPU2 status register (FLASH_C2SR) . . . . . . . . . . . . . 109
3.10.17 Flash memory CPU2 control register (FLASH_C2CR) . . . . . . . . . . . . 111
3.10.18 Secure Flash memory start address register (FLASH_SFR) . . . . . . . . 112
Contents RM0471
4/1202 RM0471 Rev 5
3.10.19 Flash memory secure SRAM2 start address and CPU2 reset vector
register (FLASH_SRRVR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
3.10.20 FLASH register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
4 Radio system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .117
4.2 Main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .117
4.3 Radio system functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118
4.3.1 General description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
5 Cyclic redundancy check calculation unit (CRC) . . . . . . . . . . . . . . . . 119
5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119
5.2 CRC main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119
5.3 CRC functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
5.3.1 CRC block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
5.3.2 CRC internal signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
5.3.3 CRC operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
5.4 CRC registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
5.4.1 CRC data register (CRC_DR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
5.4.2 CRC independent data register (CRC_IDR) . . . . . . . . . . . . . . . . . . . . 122
5.4.3 CRC control register (CRC_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
5.4.4 CRC initial value (CRC_INIT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
5.4.5 CRC polynomial (CRC_POL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
5.4.6 CRC register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
6 Power control (PWR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
6.1 Power supplies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
6.1.1 Independent analog peripherals supply . . . . . . . . . . . . . . . . . . . . . . . . 127
6.1.2 Battery backup domain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
6.1.3 Voltage regulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
6.2 Power supply supervisor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
6.2.1 Power-on reset (POR) / power-down reset (PDR) / brown-out reset
(BOR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
6.2.2 Programmable voltage detector (PVD) . . . . . . . . . . . . . . . . . . . . . . . . 130
6.3 CPU2 boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
6.4 Low-power modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
6.4.1 Run mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
RM0471 Rev 5 5/1202
RM0471 Contents
36
6.4.2 Low-power run mode (LP run) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
6.4.3 Entering Low-power mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
6.4.4 Exiting Low-power mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
6.4.5 Sleep mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
6.4.6 Low-power sleep mode (LP sleep) . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
6.4.7 Stop0 mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
6.4.8 Stop1 mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
6.4.9 Stop2 mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
6.4.10 Standby mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
6.4.11 Shutdown mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
6.4.12 Auto wakeup from Low-power mode . . . . . . . . . . . . . . . . . . . . . . . . . . 151
6.5 Real time radio information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
6.6 PWR registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
6.6.1 PWR control register 1 (PWR_CR1) . . . . . . . . . . . . . . . . . . . . . . . . . . 153
6.6.2 PWR control register 2 (PWR_CR2) . . . . . . . . . . . . . . . . . . . . . . . . . . 154
6.6.3 PWR control register 3 (PWR_CR3) . . . . . . . . . . . . . . . . . . . . . . . . . . 155
6.6.4 PWR control register 4 (PWR_CR4) . . . . . . . . . . . . . . . . . . . . . . . . . . 156
6.6.5 PWR status register 1 (PWR_SR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
6.6.6 PWR status register 2 (PWR_SR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
6.6.7 PWR status clear register (PWR_SCR) . . . . . . . . . . . . . . . . . . . . . . . . 158
6.6.8 PWR Port A pull-up control register (PWR_PUCRA) . . . . . . . . . . . . . . 159
6.6.9 PWR Port A pull-down control register (PWR_PDCRA) . . . . . . . . . . . 160
6.6.10 PWR Port B pull-up control register (PWR_PUCRB) . . . . . . . . . . . . . 160
6.6.11 PWR Port B pull-down control register (PWR_PDCRB) . . . . . . . . . . . 161
6.6.12 PWR Port C pull-up control register (PWR_PUCRC) . . . . . . . . . . . . . 161
6.6.13 PWR Port C pull-down control register (PWR_PDCRC) . . . . . . . . . . . 162
6.6.14 PWR Port E pull-up control register (PWR_PUCRE) . . . . . . . . . . . . . 162
6.6.15 PWR Port E pull-down control register (PWR_PDCRE) . . . . . . . . . . . 162
6.6.16 PWR Port H pull-up control register (PWR_PUCRH) . . . . . . . . . . . . . 163
6.6.17 PWR Port H pull-down control register (PWR_PDCRH) . . . . . . . . . . . 163
6.6.18 PWR CPU2 control register 1 (PWR_C2CR1) . . . . . . . . . . . . . . . . . . 164
6.6.19 PWR CPU2 control register 3 (PWR_C2CR3) . . . . . . . . . . . . . . . . . . 165
6.6.20 PWR extended status and status clear register (PWR_EXTSCR) . . . 166
6.6.21 PWR register map and reset value table . . . . . . . . . . . . . . . . . . . . . . . 168
7 Reset and clock control (RCC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
7.1 Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Contents RM0471
6/1202 RM0471 Rev 5
7.1.1 Power reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
7.1.2 System reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
7.1.3 Backup domain reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
7.2 Clocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
7.2.1 HSE clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
7.2.2 HSI16 clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
7.2.3 MSI clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
7.2.4 HSI48 clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
7.2.5 PLL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
7.2.6 LSE clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
7.2.7 LSI1 clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
7.2.8 LSI2 clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
7.2.9 System clock (SYSCLK) selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
7.2.10 Clock source frequency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
7.2.11 Clock security system (CSS) on HSE . . . . . . . . . . . . . . . . . . . . . . . . . 181
7.2.12 Clock security system on LSE (LSECSS) . . . . . . . . . . . . . . . . . . . . . . 182
7.2.13 LSI source selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
7.2.14 ADC clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
7.2.15 RTC clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
7.2.16 Timer clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
7.2.17 Watchdog clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
7.2.18 True RNG clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
7.2.19 Clock-out capability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
7.2.20 Internal/external clock measurement with TIM16/TIM17 . . . . . . . . . . . 184
7.2.21 Peripheral clocks enable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
7.3 Low-power modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
7.4 RCC registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
7.4.1 RCC clock control register (RCC_CR) . . . . . . . . . . . . . . . . . . . . . . . . . 190
7.4.2 RCC internal clock sources calibration register (RCC_ICSCR) . . . . . . 193
7.4.3 RCC clock configuration register (RCC_CFGR) . . . . . . . . . . . . . . . . . 193
7.4.4 RCC PLL configuration register (RCC_PLLCFGR) . . . . . . . . . . . . . . . 196
7.4.5 RCC clock interrupt enable register (RCC_CIER) . . . . . . . . . . . . . . . . 199
7.4.6 RCC clock interrupt flag register (RCC_CIFR) . . . . . . . . . . . . . . . . . . 201
7.4.7 RCC clock interrupt clear register (RCC_CICR) . . . . . . . . . . . . . . . . . 202
7.4.8 RCC AHB1 peripheral reset register (RCC_AHB1RSTR) . . . . . . . . . . 204
7.4.9 RCC AHB2 peripheral reset register (RCC_AHB2RSTR) . . . . . . . . . . 204
7.4.10 RCC AHB3 and AHB4 peripheral reset register (RCC_AHB3RSTR) . 205
RM0471 Rev 5 7/1202
RM0471 Contents
36
7.4.11 RCC APB1 peripheral reset register 1 (RCC_APB1RSTR1) . . . . . . . . 206
7.4.12 RCC APB1 peripheral reset register 2 (RCC_APB1RSTR2) . . . . . . . . 207
7.4.13 RCC APB2 peripheral reset register (RCC_APB2RSTR) . . . . . . . . . . 207
7.4.14 RCC APB3 peripheral reset register (RCC_APB3RSTR) . . . . . . . . . . 208
7.4.15 RCC AHB1 peripheral clock enable register (RCC_AHB1ENR) . . . . . 209
7.4.16 RCC AHB2 peripheral clock enable register (RCC_AHB2ENR) . . . . . 210
7.4.17 RCC AHB3 and AHB4 peripheral clock enable register
(RCC_AHB3ENR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
7.4.18 RCC APB1 peripheral clock enable register 1 (RCC_APB1ENR1) . . . 212
7.4.19 RCC APB1 peripheral clock enable register 2 (RCC_APB1ENR2) . . . 212
7.4.20 RCC APB2 peripheral clock enable register (RCC_APB2ENR) . . . . . 213
7.4.21 RCC AHB1 peripheral clocks enable in Sleep modes register
(RCC_AHB1SMENR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
7.4.22 RCC AHB2 peripheral clocks enable in Sleep modes register
(RCC_AHB2SMENR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
7.4.23 RCC AHB3 and AHB4 peripheral clocks enable in Sleep and Stop
modes register (RCC_AHB3SMENR) . . . . . . . . . . . . . . . . . . . . . . . . . 216
7.4.24 RCC APB1 peripheral clocks enable in Sleep mode register 1
(RCC_APB1SMENR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
7.4.25 RCC APB1 peripheral clocks enable in Sleep mode register 2
(RCC_APB1SMENR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
7.4.26 RCC APB2 peripheral clocks enable in Sleep mode register
(RCC_APB2SMENR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
7.4.27 RCC peripherals independent clock configuration register
(RCC_CCIPR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
7.4.28 RCC backup domain control register (RCC_BDCR) . . . . . . . . . . . . . . 221
7.4.29 RCC control/status register (RCC_CSR) . . . . . . . . . . . . . . . . . . . . . . . 223
7.4.30 RCC clock recovery RC register (RCC_CRRCR) . . . . . . . . . . . . . . . . 225
7.4.31 RCC clock HSE register (RCC_HSECR) . . . . . . . . . . . . . . . . . . . . . . . 225
7.4.32 RCC extended clock recovery register (RCC_EXTCFGR) . . . . . . . . . 226
7.4.33 RCC CPU2 AHB1 peripheral clock enable register
(RCC_C2AHB1ENR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
7.4.34 RCC CPU2 AHB2 peripheral clock enable register
(RCC_C2AHB2ENR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
7.4.35 RCC CPU2 AHB3 and AHB4 peripheral clock enable register
(RCC_C2AHB3ENR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
7.4.36 RCC CPU2 APB1 peripheral clock enable register 1
(RCC_C2APB1ENR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
7.4.37 RCC CPU2 APB1 peripheral clock enable register 2
(RCC_C2APB1ENR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
Contents RM0471
8/1202 RM0471 Rev 5
7.4.38 RCC CPU2 APB2 peripheral clock enable register
(RCC_C2APB2ENR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
7.4.39 RCC CPU2 APB3 peripheral clock enable register
(RCC_C2APB3ENR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
7.4.40 RCC CPU2 AHB1 peripheral clocks enable in Sleep modes register
(RCC_C2AHB1SMENR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
7.4.41 RCC CPU2 AHB2 peripheral clocks enable in Sleep modes register
(RCC_C2AHB2SMENR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
7.4.42 RCC CPU2 AHB3 and AHB4 peripheral clocks enable in Sleep mode
register (RCC_C2AHB3SMENR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
7.4.43 RCC CPU2 APB1 peripheral clocks enable in Sleep mode register 1
(RCC_C2APB1SMENR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
7.4.44 RCC CPU2 APB1 peripheral clocks enable in Sleep mode register 2
(RCC_C2APB1SMENR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
7.4.45 RCC CPU2 APB2 peripheral clocks enable in Sleep mode register
(RCC_C2APB2SMENR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
7.4.46 RCC CPU2 APB3 peripheral clock enable in Sleep mode register
(RCC_C2APB3SMENR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
7.4.47 RCC register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
8 General-purpose I/Os (GPIO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
8.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
8.2 GPIO main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
8.3 GPIO functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
8.3.1 General-purpose I/O (GPIO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
8.3.2 I/O pin alternate function multiplexer and mapping . . . . . . . . . . . . . . . 250
8.3.3 I/O port control registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
8.3.4 I/O port data registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
8.3.5 I/O data bitwise handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
8.3.6 GPIO locking mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
8.3.7 I/O alternate function input/output . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
8.3.8 External interrupt/wakeup lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
8.3.9 Input configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
8.3.10 Output configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
8.3.11 Alternate function configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
8.3.12 Analog configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
8.3.13 Using the LSE oscillator pins as GPIOs . . . . . . . . . . . . . . . . . . . . . . . 255
8.3.14 Using the GPIO pins in the RTC supply domain . . . . . . . . . . . . . . . . . 255
8.3.15 Using PH3 as GPIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
RM0471 Rev 5 9/1202
RM0471 Contents
36
8.4 GPIO registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
8.4.1 GPIO port mode register (GPIOx_MODER)
(x = A to C and E and H) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
8.4.2 GPIO port output type register (GPIOx_OTYPER)
(x = A to C and E and H) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
8.4.3 GPIO port output speed register (GPIOx_OSPEEDR)
(x = A to C and E and H) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
8.4.4 GPIO port pull-up/pull-down register (GPIOx_PUPDR)
(x = A to C and E and H) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
8.4.5 GPIO port input data register (GPIOx_IDR)
(x = A to C and E and H) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
8.4.6 GPIO port output data register (GPIOx_ODR)
(x = A to C and E and H) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
8.4.7 GPIO port bit set/reset register (GPIOx_BSRR)
(x = A to C and E and H) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
8.4.8 GPIO port configuration lock register (GPIOx_LCKR)
(x = A to C and E and H) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
8.4.9 GPIO alternate function low register (GPIOx_AFRL)
(x = A to C and E and H) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
8.4.10 GPIO alternate function high register (GPIOx_AFRH)
(x = A to C and E and H) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
8.4.11 GPIO port bit reset register (GPIOx_BRR) (x = A to C and E and H) . 264
8.4.12 GPIO register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
9 System configuration controller (SYSCFG) . . . . . . . . . . . . . . . . . . . . 269
9.1 SYSCFG main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
9.2 SYSCFG registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
9.2.1 SYSCFG memory remap register (SYSCFG_MEMRMP) . . . . . . . . . . 269
9.2.2 SYSCFG configuration register 1 (SYSCFG_CFGR1) . . . . . . . . . . . . 270
9.2.3 SYSCFG external interrupt configuration register 1
(SYSCFG_EXTICR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
9.2.4 SYSCFG external interrupt configuration register 2
(SYSCFG_EXTICR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
9.2.5 SYSCFG external interrupt configuration register 3
(SYSCFG_EXTICR3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
9.2.6 SYSCFG external interrupt configuration register 4
(SYSCFG_EXTICR4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
9.2.7 SYSCFG SRAM2 control and status register (SYSCFG_SCSR) . . . . 276
9.2.8 SYSCFG configuration register 2 (SYSCFG_CFGR2) . . . . . . . . . . . . 277
9.2.9 SYSCFG SRAM2 write protection register (SYSCFG_SWPR1) . . . . . 278
9.2.10 SYSCFG SRAM2 key register (SYSCFG_SKR) . . . . . . . . . . . . . . . . . 278
Contents RM0471
10/1202 RM0471 Rev 5
9.2.11 SYSCFG SRAM2 write protection register 2 (SYSCFG_SWPR2) . . . 278
9.2.12 SYSCFG CPU1 interrupt mask register 1 (SYSCFG_IMR1) . . . . . . . . 279
9.2.13 SYSCFG CPU1 interrupt mask register 2 (SYSCFG_IMR2) . . . . . . . . 279
9.2.14 SYSCFG CPU2 interrupt mask register 1 (SYSCFG_C2IMR1) . . . . . 280
9.2.15 SYSCFG CPU2 interrupt mask register 2 (SYSCFG_C2IMR2) . . . . . 280
9.2.16 SYSCFG secure IP control register (SYSCFG_SIPCR) . . . . . . . . . . . 281
9.2.17 SYSCFG register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
10 Peripherals interconnect matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
10.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
10.2 Connection summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
10.3 Interconnection details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
10.3.1 From timer (TIM1/TIM2/TIM17) to timer (TIM1/TIM2) . . . . . . . . . . . . . 286
10.3.2 From timer (TIM1/TIM2) and EXTI to ADC (ADC1) . . . . . . . . . . . . . . . 286
10.3.3 From ADC (ADC1) to timer (TIM1) . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
10.3.4 From HSE, LSE, LSI, MSI, MCO, RTC to timers
(TIM2/TIM16/TIM17) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
10.3.5 From RTC to low-power timers (LPTIM1/LPTIM2) . . . . . . . . . . . . . . . 288
10.3.6 From internal analog to ADC1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
10.3.7 From system errors to timers (TIM1/TIM16/TIM17) . . . . . . . . . . . . . . . 288
10.3.8 From timers (TIM16/TIM17) to IRTIM . . . . . . . . . . . . . . . . . . . . . . . . . 289
11 Direct memory access controller (DMA) . . . . . . . . . . . . . . . . . . . . . . . 290
11.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
11.2 DMA main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
11.3 DMA implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
11.3.1 DMA1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
11.3.2 DMA request mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
11.4 DMA functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
11.4.1 DMA block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
11.4.2 DMA pins and internal signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
11.4.3 DMA transfers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
11.4.4 DMA arbitration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
11.4.5 DMA channels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
11.4.6 DMA data width, alignment and endianness . . . . . . . . . . . . . . . . . . . . 297
11.4.7 DMA error management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
11.5 DMA interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
RM0471 Rev 5 11/1202
RM0471 Contents
36
11.6 DMA registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
11.6.1 DMA interrupt status register (DMA_ISR) . . . . . . . . . . . . . . . . . . . . . . 299
11.6.2 DMA interrupt flag clear register (DMA_IFCR) . . . . . . . . . . . . . . . . . . 302
11.6.3 DMA channel x configuration register (DMA_CCRx) . . . . . . . . . . . . . . 303
11.6.4 DMA channel x number of data to transfer register (DMA_CNDTRx) . 306
11.6.5 DMA channel x peripheral address register (DMA_CPARx) . . . . . . . . 306
11.6.6 DMA channel x memory address register (DMA_CMARx) . . . . . . . . . 307
11.6.7 DMA register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
12 DMA request multiplexer (DMAMUX) . . . . . . . . . . . . . . . . . . . . . . . . . 310
12.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
12.2 DMAMUX main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .311
12.3 DMAMUX implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .311
12.3.1 DMAMUX instantiation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
12.3.2 DMAMUX mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
12.4 DMAMUX functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
12.4.1 DMAMUX block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
12.4.2 DMAMUX signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
12.4.3 DMAMUX channels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
12.4.4 DMAMUX request line multiplexer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
12.4.5 DMAMUX request generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
12.5 DMAMUX interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
12.6 DMAMUX registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
12.6.1 DMAMUX request line multiplexer channel x configuration register
(DMAMUX_CxCR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
12.6.2 DMAMUX request line multiplexer interrupt channel status register
(DMAMUX_CSR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
12.6.3 DMAMUX request line multiplexer interrupt clear flag register
(DMAMUX_CFR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
12.6.4 DMAMUX request generator channel x configuration register
(DMAMUX_RGxCR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
12.6.5 DMAMUX request generator interrupt status register
(DMAMUX_RGSR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
12.6.6 DMAMUX request generator interrupt clear flag register
(DMAMUX_RGCFR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
12.6.7 DMAMUX register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
13 Nested vectored interrupt controller (NVIC) . . . . . . . . . . . . . . . . . . . . 326
Contents RM0471
12/1202 RM0471 Rev 5
13.1 NVIC main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
13.2 Interrupt block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
13.3 Interrupt and exception vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
13.4 Interrupt list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
14 Extended interrupt and event controller (EXTI) . . . . . . . . . . . . . . . . . 335
14.1 EXTI main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
14.2 EXTI block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
14.2.1 EXTI connections between peripherals and CPU . . . . . . . . . . . . . . . . 337
14.3 EXTI functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
14.3.1 EXTI configurable event input wakeup . . . . . . . . . . . . . . . . . . . . . . . . 338
14.3.2 EXTI direct event input wakeup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
14.4 EXTI functional behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
14.5 EXTI registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
14.5.1 EXTI rising trigger selection register (EXTI_RTSR1) . . . . . . . . . . . . . . 342
14.5.2 EXTI falling trigger selection register (EXTI_FTSR1) . . . . . . . . . . . . . 343
14.5.3 EXTI software interrupt event register (EXTI_SWIER1) . . . . . . . . . . . 343
14.5.4 EXTI pending register (EXTI_PR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
14.5.5 EXTI rising trigger selection register (EXTI_RTSR2) . . . . . . . . . . . . . . 344
14.5.6 EXTI falling trigger selection register (EXTI_FTSR2) . . . . . . . . . . . . . 345
14.5.7 EXTI software interrupt event register (EXTI_SWIER2) . . . . . . . . . . . 345
14.5.8 EXTI pending register (EXTI_PR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
14.5.9 EXTI CPU wakeup with interrupt mask register (EXTI_IMR1) . . . . . . . 347
14.5.10 EXTI CPU2 wakeup with interrupt mask register (EXTI_C2IMR1) . . . 347
14.5.11 EXTI CPU wakeup with event mask register (EXTI_EMR1) . . . . . . . . 348
14.5.12 EXTI CPU2 wakeup with event mask register (EXTI_C2EMR1) . . . . . 348
14.5.13 EXTI CPU wakeup with interrupt mask register (EXTI_IMR2) . . . . . . . 349
14.5.14 EXTI CPU2 wakeup with interrupt mask register (EXTI_C2IMR2) . . . 349
14.5.15 EXTI CPU wakeup with event mask register (EXTI_EMR2) . . . . . . . . 350
14.5.16 EXTI CPU2 wakeup with event mask register (EXTI_C2EMR2) . . . . . 350
14.5.17 EXTI register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
15 Analog-to-digital converter (ADC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
15.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
15.2 ADC main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
15.3 ADC functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
RM0471 Rev 5 13/1202
RM0471 Contents
36
15.3.1 ADC block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
15.3.2 ADC pins and internal signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
15.3.3 ADC clocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
15.3.4 ADC1 connectivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
15.3.5 Slave AHB interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
15.3.6 ADC Deep-power-down mode (DEEPPWD) and ADC voltage regulator
(ADVREGEN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
15.3.7 Single-ended and differential input channels . . . . . . . . . . . . . . . . . . . . 360
15.3.8 Calibration (ADCAL, ADCALDIF, ADC_CALFACT) . . . . . . . . . . . . . . . 361
15.3.9 ADC on-off control (ADEN, ADDIS, ADRDY) . . . . . . . . . . . . . . . . . . . . 364
15.3.10 Constraints when writing the ADC control bits . . . . . . . . . . . . . . . . . . . 365
15.3.11 Channel selection (SQRx, JSQRx) . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
15.3.12 Channel-wise programmable sampling time (SMPR1, SMPR2) . . . . . 367
15.3.13 Single conversion mode (CONT=0) . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
15.3.14 Continuous conversion mode (CONT=1) . . . . . . . . . . . . . . . . . . . . . . . 368
15.3.15 Starting conversions (ADSTART, JADSTART) . . . . . . . . . . . . . . . . . . . 369
15.3.16 ADC timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
15.3.17 Stopping an ongoing conversion (ADSTP, JADSTP) . . . . . . . . . . . . . . 370
15.3.18 Conversion on external trigger and trigger polarity
(EXTSEL, EXTEN, JEXTSEL, JEXTEN) . . . . . . . . . . . . . . . . . . . . . . . 372
15.3.19 Injected channel management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
15.3.20 Discontinuous mode (DISCEN, DISCNUM, JDISCEN) . . . . . . . . . . . . 375
15.3.21 Queue of context for injected conversions . . . . . . . . . . . . . . . . . . . . . . 376
15.3.22 Programmable resolution (RES) - Fast conversion mode . . . . . . . . . . 384
15.3.23 End of conversion, end of sampling phase (EOC, JEOC, EOSMP) . . 385
15.3.24 End of conversion sequence (EOS, JEOS) . . . . . . . . . . . . . . . . . . . . . 385
15.3.25 Timing diagrams example (single/continuous modes,
hardware/software triggers) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
15.3.26 Data management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
15.3.27 Dynamic low-power features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
15.3.28 Analog window watchdog (AWD1EN, JAWD1EN, AWD1SGL,
AWD1CH, AWD2CH, AWD3CH, AWD_HTx, AWD_LTx, AWDx) . . . . . 398
15.3.29 Oversampler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
15.3.30 Temperature sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
15.3.31 VBAT supply monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
15.3.32 Monitoring the internal voltage reference . . . . . . . . . . . . . . . . . . . . . . 409
15.4 ADC interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .411
15.5 ADC registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
Contents RM0471
14/1202 RM0471 Rev 5
15.5.1 ADC interrupt and status register (ADC_ISR) . . . . . . . . . . . . . . . . . . . 413
15.5.2 ADC interrupt enable register (ADC_IER) . . . . . . . . . . . . . . . . . . . . . . 415
15.5.3 ADC control register (ADC_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
15.5.4 ADC configuration register (ADC_CFGR) . . . . . . . . . . . . . . . . . . . . . . 420
15.5.5 ADC configuration register 2 (ADC_CFGR2) . . . . . . . . . . . . . . . . . . . 424
15.5.6 ADC sample time register 1 (ADC_SMPR1) . . . . . . . . . . . . . . . . . . . . 425
15.5.7 ADC sample time register 2 (ADC_SMPR2) . . . . . . . . . . . . . . . . . . . . 426
15.5.8 ADC watchdog threshold register 1 (ADC_TR1) . . . . . . . . . . . . . . . . . 427
15.5.9 ADC watchdog threshold register 2 (ADC_TR2) . . . . . . . . . . . . . . . . . 427
15.5.10 ADC watchdog threshold register 3 (ADC_TR3) . . . . . . . . . . . . . . . . . 428
15.5.11 ADC regular sequence register 1 (ADC_SQR1) . . . . . . . . . . . . . . . . . 429
15.5.12 ADC regular sequence register 2 (ADC_SQR2) . . . . . . . . . . . . . . . . . 430
15.5.13 ADC regular sequence register 3 (ADC_SQR3) . . . . . . . . . . . . . . . . . 431
15.5.14 ADC regular sequence register 4 (ADC_SQR4) . . . . . . . . . . . . . . . . . 432
15.5.15 ADC regular data register (ADC_DR) . . . . . . . . . . . . . . . . . . . . . . . . . 432
15.5.16 ADC injected sequence register (ADC_JSQR) . . . . . . . . . . . . . . . . . . 433
15.5.17 ADC offset y register (ADC_OFRy) . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
15.5.18 ADC injected channel y data register (ADC_JDRy) . . . . . . . . . . . . . . . 436
15.5.19 ADC analog watchdog 2 configuration register (ADC_AWD2CR) . . . . 436
15.5.20 ADC analog watchdog 3 configuration register (ADC_AWD3CR) . . . . 437
15.5.21 ADC differential mode selection register (ADC_DIFSEL) . . . . . . . . . . 437
15.5.22 ADC calibration factors (ADC_CALFACT) . . . . . . . . . . . . . . . . . . . . . . 438
15.6 ADC common registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
15.6.1 ADC common status register (ADC_CSR) . . . . . . . . . . . . . . . . . . . . . 438
15.6.2 ADC common control register (ADC_CCR) . . . . . . . . . . . . . . . . . . . . . 439
15.7 ADC register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
16 True random number generator (RNG) . . . . . . . . . . . . . . . . . . . . . . . . 444
16.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
16.2 RNG main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
16.3 RNG functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
16.3.1 RNG block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
16.3.2 RNG internal signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
16.3.3 Random number generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
16.3.4 RNG initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
16.3.5 RNG operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
16.3.6 RNG clocking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
RM0471 Rev 5 15/1202
RM0471 Contents
36
16.3.7 Error management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
16.3.8 RNG low-power usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
16.4 RNG interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
16.5 RNG processing time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
16.6 RNG entropy source validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
16.6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
16.6.2 Validation conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452
16.7 RNG registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453
16.7.1 RNG control register (RNG_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453
16.7.2 RNG status register (RNG_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454
16.7.3 RNG data register (RNG_DR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455
16.7.4 RNG register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
17 AES hardware accelerator (AES) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
17.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
17.2 AES main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
17.3 AES implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
17.4 AES functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
17.4.1 AES block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
17.4.2 AES internal signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
17.4.3 AES cryptographic core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
17.4.4 AES procedure to perform a cipher operation . . . . . . . . . . . . . . . . . . . 464
17.4.5 AES decryption round key preparation . . . . . . . . . . . . . . . . . . . . . . . . 467
17.4.6 AES ciphertext stealing and data padding . . . . . . . . . . . . . . . . . . . . . . 468
17.4.7 AES task suspend and resume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
17.4.8 AES basic chaining modes (ECB, CBC) . . . . . . . . . . . . . . . . . . . . . . . 469
17.4.9 AES counter (CTR) mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
17.4.10 AES Galois/counter mode (GCM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
17.4.11 AES Galois message authentication code (GMAC) . . . . . . . . . . . . . . 481
17.4.12 AES counter with CBC-MAC (CCM) . . . . . . . . . . . . . . . . . . . . . . . . . . 483
17.4.13 AES data registers and data swapping . . . . . . . . . . . . . . . . . . . . . . . . 488
17.4.14 AES key registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
17.4.15 AES initialization vector registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
17.4.16 AES DMA interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
17.4.17 AES error management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
17.5 AES interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
Contents RM0471
16/1202 RM0471 Rev 5
17.6 AES processing latency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
17.7 AES registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
17.7.1 AES control register (AES_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
17.7.2 AES status register (AES_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497
17.7.3 AES data input register (AES_DINR) . . . . . . . . . . . . . . . . . . . . . . . . . 498
17.7.4 AES data output register (AES_DOUTR) . . . . . . . . . . . . . . . . . . . . . . 498
17.7.5 AES key register 0 (AES_KEYR0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
17.7.6 AES key register 1 (AES_KEYR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500
17.7.7 AES key register 2 (AES_KEYR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500
17.7.8 AES key register 3 (AES_KEYR3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500
17.7.9 AES initialization vector register 0 (AES_IVR0) . . . . . . . . . . . . . . . . . . 501
17.7.10 AES initialization vector register 1 (AES_IVR1) . . . . . . . . . . . . . . . . . . 501
17.7.11 AES initialization vector register 2 (AES_IVR2) . . . . . . . . . . . . . . . . . . 501
17.7.12 AES initialization vector register 3 (AES_IVR3) . . . . . . . . . . . . . . . . . . 502
17.7.13 AES key register 4 (AES_KEYR4) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502
17.7.14 AES key register 5 (AES_KEYR5) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502
17.7.15 AES key register 6 (AES_KEYR6) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
17.7.16 AES key register 7 (AES_KEYR7) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
17.7.17 AES suspend registers (AES_SUSPxR) . . . . . . . . . . . . . . . . . . . . . . . 503
17.7.18 AES register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504
18 Public key accelerator (PKA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
18.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
18.2 PKA main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
18.3 PKA functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
18.3.1 PKA block diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
18.3.2 PKA internal signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507
18.3.3 PKA reset and clocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507
18.3.4 PKA public key acceleration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507
18.3.5 Typical applications for PKA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509
18.3.6 PKA procedure to perform an operation . . . . . . . . . . . . . . . . . . . . . . . 511
18.3.7 PKA error management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512
18.4 PKA operating modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512
18.4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512
18.4.2 Montgomery parameter computation . . . . . . . . . . . . . . . . . . . . . . . . . . 513
18.4.3 Modular addition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513
RM0471 Rev 5 17/1202
RM0471 Contents
36
18.4.4 Modular subtraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514
18.4.5 Modular and Montgomery multiplication . . . . . . . . . . . . . . . . . . . . . . . 514
18.4.6 Modular exponentiation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
18.4.7 Modular inversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516
18.4.8 Modular reduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517
18.4.9 Arithmetic addition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517
18.4.10 Arithmetic subtraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517
18.4.11 Arithmetic multiplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
18.4.12 Arithmetic comparison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
18.4.13 RSA CRT exponentiation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
18.4.14 Point on elliptic curve Fp check . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
18.4.15 ECC Fp scalar multiplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520
18.4.16 ECDSA sign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521
18.4.17 ECDSA verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
18.5 Example of configurations and processing times . . . . . . . . . . . . . . . . . . 524
18.5.1 Supported elliptic curves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524
18.5.2 Computation times . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
18.6 PKA interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527
18.7 PKA registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528
18.7.1 PKA control register (PKA_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528
18.7.2 PKA status register (PKA_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529
18.7.3 PKA clear flag register (PKA_CLRFR) . . . . . . . . . . . . . . . . . . . . . . . . . 530
18.7.4 PKA RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530
18.7.5 PKA register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
19 Advanced-control timer (TIM1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532
19.1 TIM1 introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532
19.2 TIM1 main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533
19.3 TIM1 functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
19.3.1 Time-base unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
19.3.2 Counter modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
19.3.3 Repetition counter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548
19.3.4 External trigger input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
19.3.5 Clock selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
19.3.6 Capture/compare channels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
19.3.7 Input capture mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557
Contents RM0471
18/1202 RM0471 Rev 5
19.3.8 PWM input mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558
19.3.9 Forced output mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559
19.3.10 Output compare mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
19.3.11 PWM mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561
19.3.12 Asymmetric PWM mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
19.3.13 Combined PWM mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
19.3.14 Combined 3-phase PWM mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566
19.3.15 Complementary outputs and dead-time insertion . . . . . . . . . . . . . . . . 567
19.3.16 Using the break function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
19.3.17 Bidirectional break inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575
19.3.18 Clearing the OCxREF signal on an external event . . . . . . . . . . . . . . . 577
19.3.19 6-step PWM generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578
19.3.20 One-pulse mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
19.3.21 Retriggerable one pulse mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580
19.3.22 Encoder interface mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581
19.3.23 UIF bit remapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
19.3.24 Timer input XOR function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
19.3.25 Interfacing with Hall sensors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
19.3.26 Timer synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587
19.3.27 ADC synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591
19.3.28 DMA burst mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591
19.3.29 Debug mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592
19.4 TIM1 registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593
19.4.1 TIM1 control register 1 (TIM1_CR1) . . . . . . . . . . . . . . . . . . . . . . . . . . 593
19.4.2 TIM1 control register 2 (TIM1_CR2) . . . . . . . . . . . . . . . . . . . . . . . . . . 594
19.4.3 TIM1 slave mode control register (TIM1_SMCR) . . . . . . . . . . . . . . . . 597
19.4.4 TIM1 DMA/interrupt enable register (TIM1_DIER) . . . . . . . . . . . . . . . 599
19.4.5 TIM1 status register (TIM1_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601
19.4.6 TIM1 event generation register (TIM1_EGR) . . . . . . . . . . . . . . . . . . . 603
19.4.7 TIM1 capture/compare mode register 1 [alternate]
(TIM1_CCMR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604
19.4.8 TIM1 capture/compare mode register 1 [alternate]
(TIM1_CCMR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605
19.4.9 TIM1 capture/compare mode register 2 [alternate]
(TIM1_CCMR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608
19.4.10 TIM1 capture/compare mode register 2 [alternate]
(TIM1_CCMR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
RM0471 Rev 5 19/1202
RM0471 Contents
36
19.4.11 TIM1 capture/compare enable register
(TIM1_CCER) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611
19.4.12 TIM1 counter (TIM1_CNT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614
19.4.13 TIM1 prescaler (TIM1_PSC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614
19.4.14 TIM1 auto-reload register (TIM1_ARR) . . . . . . . . . . . . . . . . . . . . . . . . 614
19.4.15 TIM1 repetition counter register (TIM1_RCR) . . . . . . . . . . . . . . . . . . . 615
19.4.16 TIM1 capture/compare register 1 (TIM1_CCR1) . . . . . . . . . . . . . . . . . 615
19.4.17 TIM1 capture/compare register 2 (TIM1_CCR2) . . . . . . . . . . . . . . . . . 616
19.4.18 TIM1 capture/compare register 3 (TIM1_CCR3) . . . . . . . . . . . . . . . . . 616
19.4.19 TIM1 capture/compare register 4 (TIM1_CCR4) . . . . . . . . . . . . . . . . . 617
19.4.20 TIM1 break and dead-time register
(TIM1_BDTR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617
19.4.21 TIM1 DMA control register (TIM1_DCR) . . . . . . . . . . . . . . . . . . . . . . . 621
19.4.22 TIM1 DMA address for full transfer
(TIM1_DMAR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622
19.4.23 TIM1 option register 1 (TIM1_OR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . 623
19.4.24 TIM1 capture/compare mode register 3
(TIM1_CCMR3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623
19.4.25 TIM1 capture/compare register 5 (TIM1_CCR5) . . . . . . . . . . . . . . . . . 624
19.4.26 TIM1 capture/compare register 6 (TIM1_CCR6) . . . . . . . . . . . . . . . . . 625
19.4.27 TIM1 alternate function option register 1 (TIM1_AF1) . . . . . . . . . . . . . 626
19.4.28 TIM1 Alternate function register 2 (TIM1_AF2) . . . . . . . . . . . . . . . . . . 627
19.4.29 TIM1 timer input selection register (TIM1_TISEL) . . . . . . . . . . . . . . . . 627
19.4.30 TIM1 register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629
20 General-purpose timer (TIM2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632
20.1 TIM2 introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632
20.2 TIM2 main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632
20.3 TIM2 functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634
20.3.1 Time-base unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634
20.3.2 Counter modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636
20.3.3 Clock selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646
20.3.4 Capture/Compare channels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650
20.3.5 Input capture mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652
20.3.6 PWM input mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
20.3.7 Forced output mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654
20.3.8 Output compare mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654
20.3.9 PWM mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655
Contents RM0471
20/1202 RM0471 Rev 5
20.3.10 Asymmetric PWM mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659
20.3.11 Combined PWM mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659
20.3.12 Clearing the OCxREF signal on an external event . . . . . . . . . . . . . . . 660
20.3.13 One-pulse mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662
20.3.14 Retriggerable one pulse mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663
20.3.15 Encoder interface mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664
20.3.16 UIF bit remapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666
20.3.17 Timer input XOR function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666
20.3.18 Timers and external trigger synchronization . . . . . . . . . . . . . . . . . . . . 667
20.3.19 Timer synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670
20.3.20 DMA burst mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674
20.3.21 Debug mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675
20.4 TIM2 registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676
20.4.1 TIM2 control register 1 (TIM2_CR1) . . . . . . . . . . . . . . . . . . . . . . . . . . 676
20.4.2 TIM2 control register 2 (TIM2_CR2) . . . . . . . . . . . . . . . . . . . . . . . . . . 677
20.4.3 TIM2 slave mode control register (TIM2_SMCR) . . . . . . . . . . . . . . . . 679
20.4.4 TIM2 DMA/Interrupt enable register (TIM2_DIER) . . . . . . . . . . . . . . . 682
20.4.5 TIM2 status register (TIM2_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683
20.4.6 TIM2 event generation register (TIM2_EGR) . . . . . . . . . . . . . . . . . . . 685
20.4.7 TIM2 capture/compare mode register 1 [alternate] (TIM2_CCMR1) . . 686
20.4.8 TIM2 capture/compare mode register 1 [alternate] (TIM2_CCMR1) . . 687
20.4.9 TIM2 capture/compare mode register 2 [alternate] (TIM2_CCMR2) . . 690
20.4.10 TIM2 capture/compare mode register 2 [alternate] (TIM2_CCMR2) . . 691
20.4.11 TIM2 capture/compare enable register
(TIM2_CCER) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692
20.4.12 TIM2 counter [alternate] (TIM2_CNT) . . . . . . . . . . . . . . . . . . . . . . . . . 693
20.4.13 TIM2 counter [alternate] (TIM2_CNT) . . . . . . . . . . . . . . . . . . . . . . . . . 694
20.4.14 TIM2 prescaler (TIM2_PSC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694
20.4.15 TIM2 auto-reload register (TIM2_ARR) . . . . . . . . . . . . . . . . . . . . . . . . 695
20.4.16 TIM2 capture/compare register 1 (TIM2_CCR1) . . . . . . . . . . . . . . . . . 695
20.4.17 TIM2 capture/compare register 2 (TIM2_CCR2) . . . . . . . . . . . . . . . . . 695
20.4.18 TIM2 capture/compare register 3 (TIM2_CCR3) . . . . . . . . . . . . . . . . . 696
20.4.19 TIM2 capture/compare register 4 (TIM2_CCR4) . . . . . . . . . . . . . . . . . 696
20.4.20 TIM2 DMA control register (TIM2_DCR) . . . . . . . . . . . . . . . . . . . . . . . 697
20.4.21 TIM2 DMA address for full transfer (TIM2_DMAR) . . . . . . . . . . . . . . . 698
20.4.22 TIM2 option register 1 (TIM2_OR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . 698
20.4.23 TIM2 alternate function option register 1 (TIM2_AF1) . . . . . . . . . . . . . 698
/