Most of the projects in this series are based on ARM Cortex-M3/M4 microprocessors because they are the most versatile and used in almost every modern embedded system. ARM Cortex microcontrollers are a family of microcontrollers based on the ARM Cortex processor architecture. ARM Cortex microcontrollers are designed for many applications, including embedded systems, IoT devices, and industrial automation systems.
ARM Cortex-M is a processor architecture designed for use in microcontrollers. It is optimized for low-power, cost-sensitive applications and is commonly used in embedded systems and IoT devices.
Cortex-M microcontrollers are based on the ARMv7-M architecture, which includes various features and instructions specifically designed for use in microcontroller applications. These features include a reduced instruction set, low-power operation, and support for real-time debugging. Cortex-M microcontrollers are also equipped with peripherals, such as timers, UARTs, and ADCs, which can interface with external devices and sensors.
ARM Cortex microcontrollers are manufactured by various companies, including ARM, STMicroelectronics, NXP, and Atmel (now a part of Microchip Technology).
STM32 family
The STM32 family of microcontrollers is a range of 32-bit microcontrollers based on the ARM Cortex-M processor architecture. STM32 microcontrollers are designed for many applications, including embedded systems, IoT devices, and industrial automation systems.
A range of development tools and software libraries supports STM32 microcontrollers. These include the STM32Cube software development kit (SDK) and the STM32CubeIDE integrated development environment (IDE).
I use the STM32 family of microcontrollers in the development of this series. Any microcontroller based on ARM Cortex-M may be used as the projects are designed to be easily portable to all ARM Cortex-M families of processors.
Development environment
Some popular IDEs for embedded software development include Eclipse, IAR STM32CubeIDE, and Keil MDK. It's a good idea to try out a few different IDEs to see which one works best for you and your needs. When choosing a development environment, it is essential to consider the supported platforms and architectures, debugging capabilities and ease of use. Below are the IDEs I used for this series.
Keil IDE
Keil MDK is an integrated development environment (IDE) for developing and debugging firmware for microcontrollers and other embedded systems. Keil, a division of ARM, produces it. The IDE includes various tools and features to help developers create and debug firmware, including a code editor, compiler, debugger, and project management tools. It supports multiple communication protocols, including USB, Ethernet, and CAN.
Keil MDK is available in several different editions, including a free edition and a range of paid editions with additional features and capabilities. It is available for Windows operating systems. Download Keil
STM32CubeIDE
STM32CubeIDE is an integrated development environment (IDE) for developing and debugging firmware for STM32 microcontrollers. It is based on the Eclipse platform and is produced by STMicroelectronics, a manufacturer of microcontrollers and other semiconductor products. STM32CubeIDE supports various STM32 microcontroller families and supports multiple communication protocols, including USB, Ethernet, and CAN. STM32CubeIDE is available for Windows, Linux, and macOS operating systems. Download STM32CubeIDE.
STM32CubeMX + Eclipse
I included this option for those already into software development and accustomed to working with a particular IDE. Eclipse is an open-source integrated development environment (IDE) that can be used with STM32CubeMX to develop firmware for STM32 microcontrollers. STM32CubeMX is a graphical configuration tool that helps developers configure the hardware and software components of their STM32 projects and generate initialization code for their applications. To use Eclipse with STM32CubeMX, developers must first install Eclipse on their computers. Then, they can use STM32CubeMX to generate initialization code for their STM32 project and import that code into an Eclipse project. To successfully compile an embedded application on Eclipse, a host of tools and plugins need to be installed and configured.
I cover the installation and configuration of these tools and plugins in a separate article. Given the complexity involved in setting up this third development environment, I advise using STM32CubeIDE if you are working with the STM32 family of microcontrollers or Keil IDE if you are using any other MCU based on Cortex-M.