RM0090
Reference manual
STM32F405xx, STM32F407xx, STM32F415xx and STM32F417xx
advanced ARM-based 32-bit MCUs
Introduction
This reference manual targets application developers. It provides complete information on
how to use the STM32F405xx, STM32F407xx, STM32F415xx and STM32F417xx
microcontroller memory and peripherals. The STM32F405xx, STM32F407xx,
STM32F415xx and STM32F417xx will be referred to as STM32F40x and STM32F41x
throughout the document, unless otherwise specified.
The STM32F40x and STM32F41x constitute a family of microcontrollers with different
memory sizes, packages and peripherals.
For ordering information, mechanical and electrical device characteristics please refer to the
STM32F40x and STM32F41x datasheets.
For information on programming, erasing and protection of the internal Flash memory
please refer to the
STM32F40x and STM32F41x Flash programming manual.
For information on the ARM Cortex™-M4F core, please refer to the
Cortex™-M4F Technical
Reference Manual.
Related documents
Available from www.arm.com:
■
Cortex™-M4F Technical Reference Manual, available from:
http://infocenter.arm.com/help/topic/com.arm.doc.ddi0439c/DDI0439C_cortex_m4_r0p1_trm.pdf
Available from STMicroelectronics web site (http://www/st.com):
■
STM32F40x and STM32F41x datasheets
■
STM32F40x and STM32F41x Flash programming manual (PM0081)
September 2011
Doc ID 018909 Rev 1
www.st.com
1/1316
Contents
RM0090
Contents
1
Documentation conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
1.1
1.2
List of abbreviations for registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Peripheral availability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2
Memory and bus architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.1
System architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.1.1
2.1.2
2.1.3
2.1.4
2.1.5
2.1.6
2.1.7
2.1.8
2.1.9
S0: I-bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
S1: D-bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
S2: S-bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
S3, S4: DMA memory bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
S5: DMA peripheral bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
S6: Ethernet DMA bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
S7: USB OTG HS DMA bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
BusMatrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
AHB/APB bridges (APB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
2.2
2.3
Memory organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Memory map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.3.1
2.3.2
2.3.3
2.3.4
2.3.5
Embedded SRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Bit banding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Embedded Flash memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Flash memory read interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Adaptive real-time memory accelerator (ART Accelerator™) . . . . . . . . 57
2.4
Boot configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3
CRC calculation unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3.1
3.2
3.3
3.4
CRC introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
CRC main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
CRC functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
CRC registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.4.1
3.4.2
3.4.3
3.4.4
Data register (CRC_DR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Independent data register (CRC_IDR) . . . . . . . . . . . . . . . . . . . . . . . . . 61
Control register (CRC_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
CRC register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
2/1316
Doc ID 018909 Rev 1
RM0090
Contents
4
Power control (PWR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.1
Power supplies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.1.1
4.1.2
4.1.3
Independent A/D converter supply and reference voltage . . . . . . . . . . . 64
Battery backup domain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Voltage regulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.2
Power supply supervisor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
4.2.1
4.2.2
4.2.3
Power-on reset (POR)/power-down reset (PDR) . . . . . . . . . . . . . . . . . . 68
Brownout reset (BOR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Programmable voltage detector (PVD) . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.3
Low-power modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.3.1
4.3.2
4.3.3
4.3.4
4.3.5
4.3.6
Slowing down system clocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Peripheral clock gating . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Sleep mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Stop mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Standby mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Programming the RTC alternate functions to wake up the device from
the Stop and Standby modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
4.4
Power control registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
4.4.1
4.4.2
4.4.3
PWR power control register (PWR_CR) . . . . . . . . . . . . . . . . . . . . . . . . 78
PWR power control/status register (PWR_CSR) . . . . . . . . . . . . . . . . . . 79
PWR register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5
Reset and clock control (RCC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.1
Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.1.1
5.1.2
5.1.3
System reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Power reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Backup domain reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
5.2
Clocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
5.2.1
5.2.2
5.2.3
5.2.4
5.2.5
5.2.6
5.2.7
5.2.8
5.2.9
HSE clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
HSI clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
PLL configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
LSE clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
LSI clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
System clock (SYSCLK) selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Clock security system (CSS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
RTC/AWU clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Watchdog clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Doc ID 018909 Rev 1
3/1316
Contents
5.2.10
5.2.11
RM0090
Clock-out capability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Internal/external clock measurement using TIM5/TIM11 . . . . . . . . . . . . 91
5.3
RCC registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
5.3.1
5.3.2
5.3.3
5.3.4
5.3.5
5.3.6
5.3.7
5.3.8
5.3.9
5.3.10
5.3.11
5.3.12
5.3.13
5.3.14
5.3.15
5.3.16
5.3.17
5.3.18
5.3.19
5.3.20
5.3.21
5.3.22
5.3.23
5.3.24
RCC clock control register (RCC_CR) . . . . . . . . . . . . . . . . . . . . . . . . . . 93
RCC PLL configuration register (RCC_PLLCFGR) . . . . . . . . . . . . . . . . 95
RCC clock configuration register (RCC_CFGR) . . . . . . . . . . . . . . . . . . 97
RCC clock interrupt register (RCC_CIR) . . . . . . . . . . . . . . . . . . . . . . . . 99
RCC AHB1 peripheral reset register (RCC_AHB1RSTR) . . . . . . . . . . 102
RCC AHB2 peripheral reset register (RCC_AHB2RSTR) . . . . . . . . . . 104
RCC AHB3 peripheral reset register (RCC_AHB3RSTR) . . . . . . . . . . 105
RCC APB1 peripheral reset register (RCC_APB1RSTR) . . . . . . . . . . 105
RCC APB2 peripheral reset register (RCC_APB2RSTR) . . . . . . . . . . 108
RCC AHB1 peripheral clock register (RCC_AHB1ENR) . . . . . . . . . . . 110
RCC AHB2 peripheral clock enable register (RCC_AHB2ENR) . . . . . 112
RCC AHB3 peripheral clock enable register (RCC_AHB3ENR) . . . . . 113
RCC APB1 peripheral clock enable register (RCC_APB1ENR) . . . . . 113
RCC APB2 peripheral clock enable register (RCC_APB2ENR) . . . . . 117
RCC AHB1 peripheral clock enable in low power mode register
(RCC_AHB1LPENR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
RCC AHB2 peripheral clock enable in low power mode register
(RCC_AHB2LPENR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
RCC AHB3 peripheral clock enable in low power mode register
(RCC_AHB3LPENR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
RCC APB1 peripheral clock enable in low power mode register
(RCC_APB1LPENR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
RCC APB2 peripheral clock enabled in low power mode register
(RCC_APB2LPENR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
RCC Backup domain control register (RCC_BDCR) . . . . . . . . . . . . . . 128
RCC clock control & status register (RCC_CSR) . . . . . . . . . . . . . . . . 129
RCC spread spectrum clock generation register (RCC_SSCGR) . . . . 131
RCC PLLI2S configuration register (RCC_PLLI2SCFGR) . . . . . . . . . 132
RCC register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
6
General-purpose I/Os (GPIO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
6.1
6.2
6.3
GPIO introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
GPIO main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
GPIO functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
6.3.1
General-purpose I/O (GPIO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
4/1316
Doc ID 018909 Rev 1
RM0090
6.3.2
6.3.3
6.3.4
6.3.5
6.3.6
6.3.7
6.3.8
6.3.9
6.3.10
6.3.11
6.3.12
6.3.13
6.3.14
6.3.15
Contents
I/O pin multiplexer and mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
I/O port control registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
I/O port data registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
I/O data bitwise handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
GPIO locking mechanism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
I/O alternate function input/output . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
External interrupt/wakeup lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Input configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Output configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Alternate function configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Analog configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Using the OSC32_IN/OSC32_OUT pins as GPIO PC14/PC15
port pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Using the OSC_IN/OSC_OUT pins as GPIO PH0/PH1 port pins . . . . 146
Selection of RTC_AF1 and RTC_AF2 alternate functions . . . . . . . . . . 146
6.4
GPIO registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
6.4.1
6.4.2
6.4.3
6.4.4
6.4.5
6.4.6
6.4.7
6.4.8
6.4.9
6.4.10
6.4.11
GPIO port mode register (GPIOx_MODER) (x = A..I) . . . . . . . . . . . . . 148
GPIO port output type register (GPIOx_OTYPER) (x = A..I) . . . . . . . . 148
GPIO port output speed register (GPIOx_OSPEEDR)
(x = A..I) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
GPIO port pull-up/pull-down register (GPIOx_PUPDR)
(x = A..I) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
GPIO port input data register (GPIOx_IDR) (x = A..I) . . . . . . . . . . . . . 150
GPIO port output data register (GPIOx_ODR) (x = A..I) . . . . . . . . . . . 150
GPIO port bit set/reset register (GPIOx_BSRR) (x = A..I) . . . . . . . . . . 150
GPIO port configuration lock register (GPIOx_LCKR)
(x = A..I) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
GPIO alternate function low register (GPIOx_AFRL) (x = A..I) . . . . . . 152
GPIO alternate function high register (GPIOx_AFRH)
(x = A..I) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
GPIO register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
7
System configuration controller (SYSCFG) . . . . . . . . . . . . . . . . . . . . 155
7.1
7.2
I/O compensation cell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
SYSCFG registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
7.2.1
7.2.2
7.2.3
SYSCFG memory remap register (SYSCFG_MEMRMP) . . . . . . . . . . 155
SYSCFG peripheral mode configuration register (SYSCFG_PMC) . . 156
SYSCFG external interrupt configuration register 1
(SYSCFG_EXTICR1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Doc ID 018909 Rev 1
5/1316
评论