Cortex™-M0+ Devices Generic User Guide


Table of Contents

Preface
About this book
Product revision status
Intended audience
Using this book
Glossary
Conventions
Additional reading
Feedback
Feedback on this product
Feedback on content
1. Introduction
1.1. About the Cortex-M0+ processor and core peripherals
1.1.1. System-level interface
1.1.2. Optional integrated configurable debug
1.1.3. Cortex-M0+ processor features summary
1.1.4. Cortex-M0+ core peripherals
2. The Cortex-M0+ Processor
2.1. Programmers model
2.1.1. Processor modes and privilege levels for software execution
2.1.2. Stacks
2.1.3. Core registers
2.1.4. Exceptions and interrupts
2.1.5. Data types
2.1.6. The Cortex Microcontroller Software Interface Standard
2.2. Memory model
2.2.1. Memory regions, types and attributes
2.2.2. Memory system ordering of memory accesses
2.2.3. Behavior of memory accesses
2.2.4. Software ordering of memory accesses
2.2.5. Memory endianness
2.3. Exception model
2.3.1. Exception states
2.3.2. Exception types
2.3.3. Exception handlers
2.3.4. Vector table
2.3.5. Exception priorities
2.3.6. Exception entry and return
2.4. Fault handling
2.4.1. Lockup
2.5. Power management
2.5.1. Entering sleep mode
2.5.2. Wakeup from sleep mode
2.5.3. The optional Wakeup Interrupt Controller
2.5.4. The external event input
2.5.5. Power management programming hints
3. The Cortex-M0+ Instruction Set
3.1. Instruction set summary
3.2. Intrinsic functions
3.3. About the instruction descriptions
3.3.1. Operands
3.3.2. Restrictions when using PC or SP
3.3.3. Shift operations
3.3.4. Address alignment
3.3.5. PC‑relative expressions
3.3.6. Conditional execution
3.4. Memory access instructions
3.4.1. ADR
3.4.2. LDR and STR, immediate offset
3.4.3. LDR and STR, register offset
3.4.4. LDR, PC‑relative
3.4.5. LDM and STM
3.4.6. PUSH and POP
3.5. General data processing instructions
3.5.1. ADC, ADD, RSB, SBC, and SUB
3.5.2. AND, ORR, EOR, and BIC
3.5.3. ASR, LSL, LSR, and ROR
3.5.4. CMP and CMN
3.5.5. MOV and MVN
3.5.6. MULS
3.5.7. REV, REV16, and REVSH
3.5.8. SXT and UXT
3.5.9. TST
3.6. Branch and control instructions
3.6.1. B, BL, BX, and BLX
3.7. Miscellaneous instructions
3.7.1. BKPT
3.7.2. CPS
3.7.3. DMB
3.7.4. DSB
3.7.5. ISB
3.7.6. MRS
3.7.7. MSR
3.7.8. NOP
3.7.9. SEV
3.7.10. SVC
3.7.11. WFE
3.7.12. WFI
4. Cortex-M0+ Peripherals
4.1. About the Cortex-M0+ peripherals
4.2. Nested Vectored Interrupt Controller
4.2.1. Interrupt Set-Enable Register
4.2.2. Interrupt Clear-Enable Register
4.2.3. Interrupt Set-Pending Register
4.2.4. Interrupt Clear-Pending Register
4.2.5. Interrupt Priority Registers
4.2.6. Level-sensitive and pulse interrupts
4.2.7. NVIC usage hints and tips
4.3. System Control Block
4.3.1. CMSIS mapping of the Cortex-M0+ SCB registers
4.3.2. CPUID Register
4.3.3. Interrupt Control and State Register
4.3.4. Vector Table Offset Register
4.3.5. Application Interrupt and Reset Control Register
4.3.6. System Control Register
4.3.7. Configuration and Control Register
4.3.8. System Handler Priority Registers
4.3.9. SCB usage hints and tips
4.4. System timer, SysTick
4.4.1. SysTick Control and Status Register
4.4.2. SysTick Reload Value Register
4.4.3. SysTick Current Value Register
4.4.4. SysTick Calibration Value Register
4.4.5. SysTick usage hints and tips
4.5. Memory Protection Unit
4.5.1. MPU Type Register
4.5.2. MPU Control Register
4.5.3. MPU Region Number Register
4.5.4. MPU Region Base Address Register
4.5.5. MPU Region Attribute and Size Register
4.5.6. MPU access permission attributes
4.5.7. MPU access permission faults
4.5.8. Updating an MPU region
4.5.9. MPU usage hints and tips
4.6. Single-cycle I/O Port
A. Revisions

List of Figures

1.1. Cortex-M0+ implementation
2.1. Vector table
3.1. ASR #3
3.2. LSR #3
3.3. LSL #3
3.4. ROR #3

List of Tables

1.
2.1. Summary of processor mode, optional execution privilege level, and stack use options
2.2. Core register set summary
2.3. PSR register combinations
2.4. APSR bit assignments
2.5. IPSR bit assignments
2.6. EPSR bit assignments
2.7. PRIMASK register bit assignments
2.8. CONTROL register bit assignments
2.9. Memory access behavior
2.10. Memory region shareability and cache policies
2.11. Properties of the different exception types
2.12. Exception return behavior
3.1. Cortex-M0+ instructions
3.2. CMSIS intrinsic functions to generate some Cortex-M0+ instructions
3.3. CMSIS intrinsic functions to access the special registers
3.4. Condition code suffixes
3.5. Memory access instructions
3.6. Data processing instructions
3.7. ADC, ADD, RSB, SBC and SUB operand restrictions
3.8. Branch and control instructions
3.9. Branch ranges
3.10. Miscellaneous instructions
4.1. Core peripheral register regions
4.2. NVIC register summary
4.3. NVIC_ISER bit assignments
4.4. NVIC_ICER bit assignments
4.5. NVIC_ISPR bit assignments
4.6. NVIC_ICPR bit assignments
4.7. NVIC_IPRx bit assignments
4.8. CMSIS functions for NVIC control
4.9. Summary of the SCB registers
4.10. CPUID register bit assignments
4.11. ICSR bit assignments
4.12. VTOR bit assignments
4.13. AIRCR bit assignments
4.14. SCR bit assignments
4.15. CCR bit assignments
4.16. System fault handler priority fields
4.17. SHPR2 register bit assignments
4.18. SHPR3 register bit assignments
4.19. System timer registers summary
4.20. SYST_CSR bit assignments
4.21. SYST_RVR bit assignments
4.22. SYST_CVR bit assignments
4.23. SYST_CALIB register bit assignments
4.24. Memory attributes summary
4.25. MPU registers summary
4.26. MPU_TYPE register bit assignments
4.27. MPU_CTRL register bit assignments
4.28. MPU_RNR bit assignments
4.29. MPU_RBAR bit assignments
4.30. MPU_RASR bit assignments
4.31. Example SIZE field values
4.32. C, B, and S encoding
4.33. AP encoding
4.34. Example memory region attributes for a microcontroller
A.1. Differences between issue A and issue B

Proprietary Notice

Words and logos marked with ® or ™ are registered trademarks or trademarks of ARM in the EU and other countries, except as otherwise stated below in this proprietary notice. Other brands and names mentioned herein may be the trademarks of their respective owners.

Neither the whole nor any part of the information contained in, or the product described in, this document may be adapted or reproduced in any material form except with the prior written permission of the copyright holder.

The product described in this document is subject to continuous developments and improvements. All particulars of the product and its use contained in this document are given by ARM in good faith. However, all warranties implied or expressed, including but not limited to implied warranties of merchantability, or fitness for purpose, are excluded.

This document is intended only to assist the reader in the use of the product. ARM shall not be liable for any loss or damage arising from the use of any information in this document, or any error or omission in such information, or any incorrect use of the product.

Where the term ARM is used it means “ARM or any of its subsidiaries as appropriate”.

Confidentiality Status

This document is Non-Confidential. The right to use, copy and disclose this document may be subject to license restrictions in accordance with the terms of the agreement entered into by ARM and the party that ARM delivered this document to.

Product Status

The information in this document is final, that is for a developed product.

Revision History
Revision A04 April 2012First release
Revision B18 December 2012Second release
Copyright © 2012 ARM. All rights reserved.ARM DUI 0662B
Non-ConfidentialID011713