0%

Book Description

Over 50 hands-on recipes that will help you develop amazing real-time applications using GPIO, RS232, ADC, DAC, timers, audio codecs, graphics LCD, and a touch screen

About This Book

  • This book focuses on programming embedded systems using a practical approach
  • Examples show how to use bitmapped graphics and manipulate digital audio to produce amazing games and other multimedia applications
  • The recipes in this book are written using ARM's MDK Microcontroller Development Kit which is the most comprehensive and accessible development solution

Who This Book Is For

This book is aimed at those with an interest in designing and programming embedded systems. These could include electrical engineers or computer programmers who want to get started with microcontroller applications using the ARM Cortex-M4 architecture in a short time frame. The book's recipes can also be used to support students learning embedded programming for the first time. Basic knowledge of programming using a high level language is essential but those familiar with other high level languages such as Python or Java should not have too much difficulty picking up the basics of embedded C programming.

What You Will Learn

  • Use ARM's uVision MDK to configure the microcontroller run time environment (RTE), create projects and compile download and run simple programs on an evaluation board.
  • Use and extend device family packs to configure I/O peripherals.
  • Develop multimedia applications using the touchscreen and audio codec beep generator.
  • Configure the codec to stream digital audio and design digital filters to create amazing audio effects.
  • Write multi-threaded programs using ARM's real time operating system (RTOS).
  • Write critical sections of code in assembly language and integrate these with functions written in C.
  • Fix problems using ARM's debugging tool to set breakpoints and examine variables.
  • Port uVision projects to other open source development environments.

In Detail

Embedded microcontrollers are at the core of many everyday electronic devices. Electronic automotive systems rely on these devices for engine management, anti-lock brakes, in car entertainment, automatic transmission, active suspension, satellite navigation, etc. The so-called internet of things drives the market for such technology, so much so that embedded cores now represent 90% of all processor's sold. The ARM Cortex-M4 is one of the most powerful microcontrollers on the market and includes a floating point unit (FPU) which enables it to address applications.

The ARM Cortex-M4 Microcontroller Cookbook provides a practical introduction to programming an embedded microcontroller architecture. This book attempts to address this through a series of recipes that develop embedded applications targeting the ARM-Cortex M4 device family. The recipes in this book have all been tested using the Keil MCBSTM32F400 board. This board includes a small graphic LCD touchscreen (320x240 pixels) that can be used to create a variety of 2D gaming applications. These motivate a younger audience and are used throughout the book to illustrate particular hardware peripherals and software concepts.

C language is used predominantly throughout but one chapter is devoted to recipes involving assembly language. Programs are mostly written using ARM's free microcontroller development kit (MDK) but for those looking for open source development environments the book also shows how to configure the ARM-GNU toolchain. Some of the recipes described in the book are the basis for laboratories and assignments undertaken by undergraduates.

Style and approach

The ARM Cortex-M4 Cookbook is a practical guide full of hands-on recipes. It follows a step-by-step approach that allows you to find, utilize and learn ARM concepts quickly.

Downloading the example code for this book. You can download the example code files for all Packt books you have purchased from your account at http://www.PacktPub.com. If you purchased this book elsewhere, you can visit http://www.PacktPub.com/support and register to have the code file.

Table of Contents

  1. ARM® Cortex® M4 Cookbook
    1. Table of Contents
    2. ARM® Cortex® M4 Cookbook
    3. Credits
    4. About the Author
    5. About the Reviewer
    6. www.PacktPub.com
      1. eBooks, discount offers, and more
        1. Why Subscribe?
    7. Preface
      1. What this book covers
      2. What you need for this book
      3. Who this book is for
      4. Sections
        1. Getting ready
        2. How to do it…
        3. How it works…
        4. There's more…
        5. See also
      5. Conventions
      6. Reader feedback
      7. Customer support
        1. Downloading the example code
        2. Downloading the color images of this book
        3. Errata
        4. Piracy
        5. Questions
    8. 1. A Practical Introduction to ARM® CORTEX®
      1. Introduction
      2. Installing uVision5
        1. How to do it…
        2. How it works…
      3. Linking an evaluation board
        1. How to do it…
        2. How it works…
        3. There's more…
      4. Running an example program
        1. How to do it…
        2. How it works…
      5. Writing a simple program
        1. How to do it…
        2. How it works…
        3. There's more…
      6. Understanding the simple use of GPIO
        1. How to do it…
        2. How it works…
        3. There's more…
      7. Estimating microcontroller performance
        1. How to do it…
        2. There's more…
        3. See also
    9. 2. C Language Programming
      1. Introduction
      2. Configuring the hardware abstraction layer
        1. How to do it…
        2. How it works…
      3. Writing a C program to blink each LED in turn
        1. Getting ready…
        2. How to do it…
        3. How it works…
        4. There's more…
      4. Writing a function
        1. How to do it
        2. How it works…
        3. There's more…
      5. Writing to the console window
        1. Getting ready
        2. How to do it…
        3. How it works…
      6. Writing to the GLCD
        1. Getting ready
        2. How to do it…
        3. How it works…
      7. Creating a game application – Stage 1
        1. How to do it…
        2. How it works…
      8. Creating a game application – Stage 2
        1. There's more…
        2. How it works…
      9. Debugging your code using print statements
        1. How to do it…
        2. How it works…
      10. Using the debugger
        1. How to do it…
        2. See also
    10. 3. Programming I/O
      1. Introduction
      2. Performing arithmetic operations
        1. How to do it…
        2. How it works…
      3. Illustrating machine storage classes
        1. How to do it…
        2. How it works…
      4. Configuring GPIO ports
        1. How to do it…
        2. How it works…
        3. There's more…
      5. Configuring UART ports
        1. How to do it…
        2. How it works…
      6. Handling interrupts
        1. Getting ready
        2. How to do it…
        3. How it works…
        4. There's more…
      7. Using timers to create a digital clock
        1. How to do it…
        2. How it works…
    11. 4. Assembly Language Programming
      1. Introduction
      2. Writing Cortex-M4 assembly language
        1. Getting ready
        2. How to do it…
        3. How it works…
        4. There's more…
        5. See also
      3. Passing parameters between C and the assembly language
        1. Getting ready
        2. How to do it…
        3. How it works…
        4. There's more…
        5. See also
      4. Handling interrupts in assembly language
        1. Getting ready
        2. How to do it…
        3. How it works…
        4. There's more…
      5. Implementing a jump table
        1. Getting ready
        2. How to do it…
        3. How it works…
      6. Debugging assembly language
        1. How to do it…
        2. How it works…
        3. There's more…
    12. 5. Data Conversion
      1. Introduction
      2. Setting up the ADC
        1. How to do it…
        2. How it works…
        3. There's more…
      3. Configuring general-purpose timers
        1. How to do it…
        2. How it works…
      4. Using timers to trigger conversions
        1. How to do it…
        2. How it works…
        3. There's more…
      5. Setting up the DAC
        1. How to do it…
        2. How it works…
        3. There's more…
      6. Generating a sine wave
        1. Getting ready
        2. How to do it…
        3. How it works…
    13. 6. Multimedia Support
      1. Introduction
      2. Setting the RTE for the I2C Peripheral Bus
        1. How to do it…
        2. How it works…
      3. How to use the LCD touchscreen
        1. How to do it…
        2. How it works…
      4. Writing a driver for the audio codec
        1. How to do it…
        2. How it works…
      5. How to use the audio codec
        1. How to do it…
        2. How it works…
      6. How to use the camera
        1. How to do it…
        2. How it works…
        3. There's more…
      7. Designing bitmapped graphics
        1. How to do it…
        2. How it works…
        3. There's more…
      8. Ideas for games using sound and graphics
    14. 7. Real-Time Signal Processing
      1. Introduction
      2. Configuring the audio codec
        1. How to do it…
        2. How it works…
        3. There's more…
      3. How to play prerecorded audio
        1. Getting ready
        2. How to do it…
        3. How it works…
      4. Designing a low-pass digital filter
        1. Getting ready
        2. How to do it…
        3. How it works…
      5. How to make an audio tone control
        1. Getting ready
        2. How to do it…
        3. How it works…
        4. There's more...
    15. 8. Real-Time Embedded Systems
      1. Introduction
      2. Multithreaded programs using event flags
        1. How to do it…
        2. How it works…
      3. Multithreaded programs using mailboxes
        1. How to do it…
        2. How it works…
      4. Why ensuring mutual exclusion is important when accessing shared resources
        1. How to do it…
        2. How it works…
        3. There's more…
      5. Why we must use a mutex to access the GLCD
        1. How to do it…
        2. How it works…
      6. How to write a multithreaded Pong game
        1. How to do it…
        2. How it works…
      7. Debugging programs that use CMSIS-RTOS
        1. How to do it…
        2. How it works…
    16. 9. Embedded Toolchain
      1. Introduction
      2. Installing GNU ARM Eclipse
        1. How to do it…
        2. How it works…
      3. Programming the MCBSTM32F400 evaluation board
        1. How to do it…
        2. How it works…
      4. How to use the STM32CubeMX Framework (API)
        1. How to do it…
        2. How it works…
        3. There's more…
      5. How to port uVision projects to GNU ARM Eclipse
        1. How to do it…
    17. Index
3.143.9.115