STM32F10xxx Cortex M3 Programming Manual Stm32
User Manual: Pdf
Open the PDF directly: View PDF .
Page Count: 137
PM0056
Programming manual
STM32F10xxx Cortex-M3 programming manual
This programming manual provides information for application and system-level software
developers. It gives a full description of the STM32F10xxx Cortex™-M3 processor
programming model, instruction set and core peripherals.
The STM32F10xxx Cortex™-M3 processor is a high performance 32-bit processor designed
for the microcontroller market. It offers significant benefits to developers, including:
October 2009
●
Outstanding processing performance combined with fast interrupt handling
●
Enhanced system debug with extensive breakpoint and trace capabilities
●
Efficient processor core, system and memories
●
Ultra-low power consumption with integrated sleep modes
●
Platform security
Doc ID 15491 Rev 2
1/137
www.st.com
Contents
PM0056
Contents
1
2
About this document . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.1
Typographical conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2
List of abbreviations for registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3
About the STM32 Cortex-M3 processor and core peripherals . . . . . . . . . . 8
System level interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3.2
Integrated configurable debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3.3
Cortex-M3 processor features and benefits summary . . . . . . . . . . . . . . 10
1.3.4
Cortex-M3 core peripherals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
The Cortex-M3 processor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.1
2.2
2.3
2/137
1.3.1
Programmers model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.1.1
Processor mode and privilege levels for software execution . . . . . . . . . 12
2.1.2
Stacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.1.3
Core registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.1.4
Exceptions and interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.1.5
Data types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.1.6
The Cortex microcontroller software interface standard (CMSIS) . . . . . 22
Memory model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2.1
Memory regions, types and attributes . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.2.2
Memory system ordering of memory accesses . . . . . . . . . . . . . . . . . . . 25
2.2.3
Behavior of memory accesses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.2.4
Software ordering of memory accesses . . . . . . . . . . . . . . . . . . . . . . . . 26
2.2.5
Bit-banding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.2.6
Memory endianness . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.2.7
Synchronization primitives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.2.8
Programming hints for the synchronization primitives . . . . . . . . . . . . . . 31
Exception model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.3.1
Exception states . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.3.2
Exception types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.3.3
Exception handlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.3.4
Vector table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.3.5
Exception priorities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.3.6
Interrupt priority grouping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.3.7
Exception entry and return . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Doc ID 15491 Rev 2
PM0056
Contents
2.4
2.5
3
Fault handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.4.1
Fault types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.4.2
Fault escalation and hard faults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.4.3
Fault status registers and fault address registers . . . . . . . . . . . . . . . . . 41
2.4.4
Lockup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Power management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.5.1
Entering sleep mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.5.2
Wakeup from sleep mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.5.3
The external event input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.5.4
Power management programming hints . . . . . . . . . . . . . . . . . . . . . . . . 43
The Cortex-M3 instruction set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.1
Instruction set summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.2
Intrinsic functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.3
About the instruction descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.4
3.5
3.3.1
Operands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.3.2
Restrictions when using PC or SP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.3.3
Flexible second operand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.3.4
Shift operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.3.5
Address alignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.3.6
PC-relative expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.3.7
Conditional execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.3.8
Instruction width selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Memory access instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.4.1
ADR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.4.2
LDR and STR, immediate offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3.4.3
LDR and STR, register offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.4.4
LDR and STR, unprivileged . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.4.5
LDR, PC-relative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3.4.6
LDM and STM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.4.7
PUSH and POP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
3.4.8
LDREX and STREX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
3.4.9
CLREX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
General data processing instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
3.5.1
ADD, ADC, SUB, SBC, and RSB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
3.5.2
AND, ORR, EOR, BIC, and ORN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Doc ID 15491 Rev 2
3/137
Contents
PM0056
3.6
3.7
3.5.3
ASR, LSL, LSR, ROR, and RRX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
3.5.4
CLZ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.5.5
CMP and CMN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3.5.6
MOV and MVN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
3.5.7
MOVT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.5.8
REV, REV16, REVSH, and RBIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
3.5.9
TST and TEQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Multiply and divide instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
3.6.1
MUL, MLA, and MLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
3.6.2
UMULL, UMLAL, SMULL, and SMLAL . . . . . . . . . . . . . . . . . . . . . . . . . 84
3.6.3
SDIV and UDIV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Saturating instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
3.7.1
3.8
3.9
4
4/137
SSAT and USAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Bitfield instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
3.8.1
BFC and BFI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
3.8.2
SBFX and UBFX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
3.8.3
SXT and UXT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
3.8.4
Branch and control instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
3.8.5
B, BL, BX, and BLX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
3.8.6
CBZ and CBNZ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
3.8.7
IT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
3.8.8
TBB and TBH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Miscellaneous instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
3.9.1
BKPT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
3.9.2
CPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
3.9.3
DMB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
3.9.4
DSB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
3.9.5
ISB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
3.9.6
MRS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
3.9.7
MSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
3.9.8
NOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
3.9.9
SEV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
3.9.10
SVC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
3.9.11
WFE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
3.9.12
WFI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Core peripherals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Doc ID 15491 Rev 2
PM0056
Contents
4.1
About the STM32 core peripherals . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
4.2
Nested vectored interrupt controller (NVIC) . . . . . . . . . . . . . . . . . . . . . . 104
4.3
4.4
5
4.2.1
The CMSIS mapping of the Cortex-M3 NVIC registers . . . . . . . . . . . . 105
4.2.2
Interrupt set-enable registers (NVIC_ISERx) . . . . . . . . . . . . . . . . . . . . 106
4.2.3
Interrupt clear-enable registers (NVIC_ICERx) . . . . . . . . . . . . . . . . . . 107
4.2.4
Interrupt set-pending registers (NVIC_ISPRx) . . . . . . . . . . . . . . . . . . . 108
4.2.5
Interrupt clear-pending registers (NVIC_ICPRx) . . . . . . . . . . . . . . . . . 109
4.2.6
Interrupt active bit registers (NVIC_IABRx) . . . . . . . . . . . . . . . . . . . . . 110
4.2.7
Interrupt priority registers (NVIC_IPRx) . . . . . . . . . . . . . . . . . . . . . . . . 111
4.2.8
Software trigger interrupt register (NVIC_STIR) . . . . . . . . . . . . . . . . . 112
4.2.9
Level-sensitive and pulse interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
4.2.10
NVIC design hints and tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
4.2.11
NVIC register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
System control block (SCB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
4.3.1
CPUID base register (SCB_CPUID) . . . . . . . . . . . . . . . . . . . . . . . . . . 115
4.3.2
Interrupt control and state register (SCB_ICSR) . . . . . . . . . . . . . . . . . 116
4.3.3
Vector table offset register (SCB_VTOR) . . . . . . . . . . . . . . . . . . . . . . . 118
4.3.4
Application interrupt and reset control register (SCB_AIRCR) . . . . . . 119
4.3.5
System control register (SCB_SCR) . . . . . . . . . . . . . . . . . . . . . . . . . . 120
4.3.6
Configuration and control register (SCB_CCR) . . . . . . . . . . . . . . . . . . 121
4.3.7
System handler priority registers (SHPRx) . . . . . . . . . . . . . . . . . . . . . 122
4.3.8
System handler control and state register (SCB_SHCSR) . . . . . . . . . 124
4.3.9
Configurable fault status register (SCB_CFSR) . . . . . . . . . . . . . . . . . . 126
4.3.10
Hard fault status register (SCB_HFSR) . . . . . . . . . . . . . . . . . . . . . . . . 129
4.3.11
Memory management fault address register (SCB_MMFAR) . . . . . . . 130
4.3.12
Bus fault address register (SCB_BFAR) . . . . . . . . . . . . . . . . . . . . . . . 130
4.3.13
System control block design hints and tips . . . . . . . . . . . . . . . . . . . . . 131
4.3.14
SCB register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
SysTick timer (STK) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
4.4.1
SysTick control and status register (STK_CTRL) . . . . . . . . . . . . . . . . 132
4.4.2
SysTick reload value register (STK_LOAD) . . . . . . . . . . . . . . . . . . . . . 133
4.4.3
SysTick current value register (STK_VAL) . . . . . . . . . . . . . . . . . . . . . . 134
4.4.4
SysTick calibration value register (STK_CALIB) . . . . . . . . . . . . . . . . . 134
4.4.5
SysTick design hints and tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
4.4.6
SysTick register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Revision history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Doc ID 15491 Rev 2
5/137
List of tables
PM0056
List of tables
Table 1.
Table 2.
Table 3.
Table 4.
Table 5.
Table 6.
Table 7.
Table 8.
Table 9.
Table 10.
Table 11.
Table 12.
Table 13.
Table 14.
Table 15.
Table 16.
Table 17.
Table 18.
Table 19.
Table 20.
Table 21.
Table 22.
Table 23.
Table 24.
Table 25.
Table 26.
Table 27.
Table 28.
Table 29.
Table 30.
Table 31.
Table 32.
Table 33.
Table 34.
Table 35.
Table 36.
Table 37.
Table 38.
Table 39.
Table 40.
Table 41.
Table 42.
6/137
Summary of processor mode, execution privilege level, and stack use options. . . . . . . . . 13
Core register set summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
PSR register combinations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
APSR bit definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
IPSR bit definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
EPSR bit definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
PRIMASK register bit definitions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
FAULTMASK register bit definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
BASEPRI register bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
CONTROL register bit definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Ordering of memory accesses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Memory access behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
SRAM memory bit-banding regions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Peripheral memory bit-banding regions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
C compiler intrinsic functions for exclusive access instructions . . . . . . . . . . . . . . . . . . . . . 31
Properties of the different exception types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Exception return behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Faults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Fault status and fault address registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Cortex-M3 instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
CMSIS intrinsic functions to generate some Cortex-M3 instructions . . . . . . . . . . . . . . . . . 49
CMSIS intrinsic functions to access the special registers. . . . . . . . . . . . . . . . . . . . . . . . . . 50
Condition code suffixes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Memory access instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Immediate, pre-indexed and post-indexed offset ranges . . . . . . . . . . . . . . . . . . . . . . . . . . 61
label-PC offset ranges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Data processing instructions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Multiply and divide instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Packing and unpacking instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Branch and control instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Branch ranges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Miscellaneous instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
STM32 core peripheral register regions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Mapping of interrupts to the interrupt variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
IPR bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
CMSIS functions for NVIC control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
NVIC register map and reset values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Priority grouping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
System fault handler priority fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
SCB register map and reset values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
SysTick register map and reset values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Document revision history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Doc ID 15491 Rev 2
PM0056
List of figures
List of figures
Figure 1.
Figure 2.
Figure 3.
Figure 4.
Figure 5.
Figure 6.
Figure 7.
Figure 8.
Figure 9.
Figure 10.
Figure 11.
Figure 12.
Figure 13.
Figure 14.
Figure 15.
Figure 16.
Figure 17.
Figure 18.
Figure 19.
STM32 Cortex-M3 implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Processor core registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
APSR, IPSR and EPSR bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
PSR bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
PRIMASK bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
FAULTMASK bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
BASEPRI bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
CONTROL bit assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Memory map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Bit-band mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Little-endian example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Vector table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
ASR#3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
LSR#3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
LSL#3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
ROR #3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
RRX #3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
NVIC__IPRx register mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
CFSR subregisters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Doc ID 15491 Rev 2
7/137
About this document
1
PM0056
About this document
This document provides the information required for application and system-level software
development. It does not provide information on debug components, features, or operation.
This material is for microcontroller software and hardware engineers, including those who
have no experience of ARM products.
1.1
Typographical conventions
The typographical conventions used in this document are:
italic
Highlights important notes, introduces special terminology, denotes
internal cross-references, and citations.
< and >
Enclose replaceable terms for assembler syntax where they appear
in code or code fragments. For example:
LDRSB
Source Exif Data:
File Type : PDF
File Type Extension : pdf
MIME Type : application/pdf
PDF Version : 1.4
Linearized : No
XMP Toolkit : Adobe XMP Core 4.2.1-c043 52.372728, 2009/01/18-15:08:04
Create Date : 2009:10:26 10:37:42Z
Creator Tool : FrameMaker 8.0
Modify Date : 2009:10:26 11:20:18+0100
Metadata Date : 2009:10:26 11:20:18+0100
Producer : Acrobat Distiller 9.2.0 (Windows) (via http://big.faceless.org/products/pdf?version=2.6.5)
Format : application/pdf
Description : Programming Manual;STM32F101C4;STM32F101C6;STM32F101C8;STM32F101CB;STM32F101R4;STM32F101R6;STM32F101R8;STM32F101RB;STM32F101RC;STM32F101RD;STM32F101RE;STM32F101T4;STM32F101T6;STM32F101T8;STM32F101V8;STM32F101VB;STM32F101VC;STM32F101VD;STM32F101ZC;STM32F101VE;STM32F101ZD;STM32F102C4;STM32F102C6;STM32F102C8;STM32F102CB;STM32F102R4;STM32F102R6;STM32F102R8;STM32F102RB;STM32F103C4;STM32F103C6;STM32F103C8;STM32F103CB;STM32F103R4;STM32F103R6;STM32F103R8;STM32F103RB;STM32F103RC;STM32F103RD;STM32F103RE;STM32F103T6;STM32F103T8;STM32F103V8;STM32F103VB;STM32F103VC;STM32F103VD;STM32F103VE;STM32F103ZC;STM32F103ZD;STM32F103ZE;STM32F105R8;STM32F105RB;STM32F105RC;STM32F105V8;STM32F105VB;STM32F105VC;STM32F107RB;STM32F107RC;STM32F107VB;STM32F107VC;Stm32;PM0056
Creator : STMicroelectronics
Title : STM32F10xxx Cortex-M3 programming manual
Date : 2009:10:26 11:20:18+0100
Document ID : uuid:802854b0-77ca-4824-ad38-ad27e1cbd3cf
Instance ID : uuid:4febe9ce-cded-4c40-8111-0b4f6a8d020a
Page Mode : UseOutlines
Page Count : 137
Page Layout : OneColumn
Subject : Programming Manual;STM32F101C4;STM32F101C6;STM32F101C8;STM32F101CB;STM32F101R4;STM32F101R6;STM32F101R8;STM32F101RB;STM32F101RC;STM32F101RD;STM32F101RE;STM32F101T4;STM32F101T6;STM32F101T8;STM32F101V8;STM32F101VB;STM32F101VC;STM32F101VD;STM32F101ZC;STM32F101VE;STM32F101ZD;STM32F102C4;STM32F102C6;STM32F102C8;STM32F102CB;STM32F102R4;STM32F102R6;STM32F102R8;STM32F102RB;STM32F103C4;STM32F103C6;STM32F103C8;STM32F103CB;STM32F103R4;STM32F103R6;STM32F103R8;STM32F103RB;STM32F103RC;STM32F103RD;STM32F103RE;STM32F103T6;STM32F103T8;STM32F103V8;STM32F103VB;STM32F103VC;STM32F103VD;STM32F103VE;STM32F103ZC;STM32F103ZD;STM32F103ZE;STM32F105R8;STM32F105RB;STM32F105RC;STM32F105V8;STM32F105VB;STM32F105VC;STM32F107RB;STM32F107RC;STM32F107VB;STM32F107VC;Stm32;PM0056
Author : STMicroelectronics
Keywords : Programming, Manual;STM32F101C4;STM32F101C6;STM32F101C8;STM32F101CB;STM32F101R4;STM32F101R6;STM32F101R8;STM32F101RB;STM32F101RC;STM32F101RD;STM32F101RE;STM32F101T4;STM32F101T6;STM32F101T8;STM32F101V8;STM32F101VB;STM32F101VC;STM32F101VD;STM32F101ZC;STM32F101VE;STM32F101ZD;STM32F102C4;STM32F102C6;STM32F102C8;STM32F102CB;STM32F102R4;STM32F102R6;STM32F102R8;STM32F102RB;STM32F103C4;STM32F103C6;STM32F103C8;STM32F103CB;STM32F103R4;STM32F103R6;STM32F103R8;STM32F103RB;STM32F103RC;STM32F103RD;STM32F103RE;STM32F103T6;STM32F103T8;STM32F103V8;STM32F103VB;STM32F103VC;STM32F103VD;STM32F103VE;STM32F103ZC;STM32F103ZD;STM32F103ZE;STM32F105R8;STM32F105RB;STM32F105RC;STM32F105V8;STM32F105VB;STM32F105VC;STM32F107RB;STM32F107RC;STM32F107VB;STM32F107VC;Stm32;PM0056
EXIF Metadata provided by EXIF.tools