Preface
I started learning about microcontrollers when I was studying at university. At that time, some of the single board computers I was using had an 8-bit microcontroller, and my programs were stored in external Eraseable Programmable Read Only Memory (EPROM) chips. The EPROM chips were in relatively large dual in line (DIP) packages and could be erased by shining ultraviolet light through the glass window. Since then, microcontroller technology has changed a lot: external EPROMs have been replaced by on-chip flash memories, DIP packages have been replaced by surface mount packages, and most microcontrollers have become in-system reprogrammable. More and more peripherals have been added to microcontrollers, and the complexity of the software has increased dramatically.
Since 2004, the microcontroller market has made some dramatic changes. Previously, the microcontrollers on the market were mostly 8-bit and 16-bit types, and 32-bit microcontroller applications were limited to high-end products, mainly because of the cost. Although most of the 8-bit and 16-bit microcontrollers could be programmed in C, trying to squeeze all the required functionalities into a small microcontroller was becoming more and more difficult. You might spend one day writing a program in C, and then find that you needed to spend another two days rewriting part of the program in assembly because the processing speed of the microcontroller was too slow for all the required processing tasks.
Even if you are developing simple applications and do not require high processing power in the microcontrollers, occasionally you might need to switch to a different microcontroller architecture because of project requirements, and this can take a tremendous effort. Not only will you need to spend the money to buy new tools, but it can take weeks to learn to use the tools and months to become familiar with a new architecture.
In October 2004, the price of an ARM7 microcontroller dropped to below 3 US dollars. This was very good news for many developers who needed to develop complex embedded software. Since then, with the availability of the Cortex-M3, the price of ARM microcontrollers has dropped much further and you can get an ARM microcontroller for less than 1 US dollar. As a result, the use of ARM microcontrollers is gaining acceptance. In addition to providing excellent performance, the modern ARM microcontrollers require very little power. The use of ARM microcontrollers is no longer limited to high-end products.
Like many good ideas, the concept for the Cortex-M0 started life as a conversation between engineers in a bar. A small and growing number of ARM partners were looking for a 32-bit processor that was small, really small. The concept quickly became a full-blown engineering project (codenamed “Swift”). In 2009, the Cortex-M0 design was completed, and it quickly became one of the most successful ARM processor products.
Through the examples in this book, you will find that the Cortex-M0 microcontrollers are easy to use. In some aspects, they are even easier to use than some 8-bit microcontrollers because of the simplicity of the linear memory architecture, an uncomplicated and yet flexible exception model, comprehensive debug features, and the software infrastructures provided by ARM, microcontroller vendors, and software solution providers.
Because the Cortex-M processors are extremely C friendly, there is no need to optimize the applications with assembly. There is no need to learn lots of special C directives just to get the interrupt handlers working. For some embedded developers, the switch to ARM microcontrollers also means it is much easier to switch between different microcontroller products without the need to buy new tools and learn a new architecture. On the Internet you can find that many people are already using Cortex-M0 microcontrollers on a number of interesting projects.
After working on a number of ARM processor projects, I gained a lot of experience in the use of the Cortex-M processors (and possibly some gray hairs as well). With encouragement from some friends and help from lots of people, I decided to put those experiences into a book to share with numerous embedded developers who are interested in using the ARM Cortex-M processors. I learned a lot while writing my first book, which is about the Cortex-M3 processor. Many thanks to those people who gave me useful feedback when the first book was published, both inside and outside ARM. I know it wasn't perfect, but at least it is encouraging to find that many readers found my Cortex-M3 book useful. I hope this book, The Definitive Guide to the ARM Cortex-M0, will be even better.
This book targets a wide range of audiences: from students, hobbyists, and electronic enthusiasts, to professional embedded software developers, researchers, and even semiconductor product designers. As a result, it covers a wide range of information, including many advanced technical details that most embedded developers might never need. At the same time, it contains many examples, making it easy for novice embedded software developers to use.
I hope that you find this book helpful and that you enjoy using the Cortex-M0 in your next embedded project.
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.139.90.131