Contents PM0215
4/91 Doc ID 022979 Rev 1
3.7.3 DMB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.7.4 DSB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.7.5 ISB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3.7.6 MRS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3.7.7 MSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
3.7.8 NOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.7.9 SEV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.7.10 SVC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
3.7.11 WFE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
3.7.12 WFI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
4 Core peripherals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.1 About the STM32 Cortex-M0 core peripherals . . . . . . . . . . . . . . . . . . . . . 69
4.2 Nested vectored interrupt controller (NVIC) . . . . . . . . . . . . . . . . . . . . . . . 70
4.2.1 Accessing the Cortex-M0 NVIC registers using CMSIS . . . . . . . . . . . . 70
4.2.2 Interrupt set-enable register (ISER) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.2.3 Interrupt clear-enable register (ICER) . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.2.4 Interrupt set-pending register (ISPR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.2.5 Interrupt clear-pending register (ICPR) . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.2.6 Interrupt priority register (IPR0-IPR7) . . . . . . . . . . . . . . . . . . . . . . . . . . 73
4.2.7 Level-sensitive and pulse interrupts . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
4.2.8 NVIC design hints and tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
4.2.9 NVIC register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
4.3 System control block (SCB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
4.3.1 CPUID base register (CPUID) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
4.3.2 Interrupt control and state register (ICSR) . . . . . . . . . . . . . . . . . . . . . . . 78
4.3.3 Application interrupt and reset control register (AIRCR) . . . . . . . . . . . . 80
4.3.4 System control register (SCR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
4.3.5 Configuration and control register (CCR) . . . . . . . . . . . . . . . . . . . . . . . 82
4.3.6 System handler priority registers (SHPRx) . . . . . . . . . . . . . . . . . . . . . . 83
4.3.7 SCB usage hints and tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
4.3.8 SCB register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
4.4 SysTick timer (STK) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
4.4.1 SysTick control and status register (STK_CSR) . . . . . . . . . . . . . . . . . . 86
4.4.2 SysTick reload value register (STK_RVR) . . . . . . . . . . . . . . . . . . . . . . . 87
4.4.3 SysTick current value register (STK_CVR) . . . . . . . . . . . . . . . . . . . . . . 87
4.4.4 SysTick calibration value register (STK_CALIB) . . . . . . . . . . . . . . . . . . 88