Zapta has shared the design files on github for his ARM PRO MINI, which is an open source ARM M0 microcontroller development board that could be handy for quick prototyping and as a starting point for your own ARM based custom designs.
Arm Pro Mini board
- Prototyping friendly. Compatible with standard soldieries breadboards and can be soldered to a standard 0.1” proto board.
- Straight forward barebone design. Customize for your own PCB design by selecting the portions of the circuit you need.
- Single package install of the free and fully feature IDE (NXP Eclipse/LPCXpresso).
- Zero software installation when using with the mbed.org online IDE.
- Full support of Windows, Mac OSX and Linux.
- Easy firmware upgrade using a file drag and drop. Programmers and adapters are not required, even if you are bringing up your own board!
- Supports optional debuggers (such as the OM13014,598) for single stepping and full debugging capabilities.
- I/O library and a hello world example (with serial printing over USB, parallel port io, blinking LED, and timing).
- No-nonsense open source license (no commercial restrictions, sharing and attribution not required).
In my earlier post on STM32 GPIOs I showed how to flash a LED with variable delay times. That example was based on polling method where the code continuously monitored the logic state of a GPIO input pin attached to a push button to determine the delay amount. Obviously that won’t be an efficient technique when a program will be of a considerable size and complexity. This is simply so because the CPU will have to check the GPIO’s logic state every time the super-loop (while (1) loop in the main function) repeats and the push button will also not be responsive during the software delay function calls. Thus the overall performance is poor and not real-time. To get rid of these issues, we’ll need to use external interrupts – a vital feature in every common microcontroller.
STM32F1xx series are ARM Cortex M3 based MCUs. The Cortex M3 based MCUs have a sophisticated and yet easy to use interrupt system called the Nested Vectored Interrupt Controller (NVIC). It ensures low latency and high performance. There are several features of the NVIC and these are handled by the compiler. Our job is simply to enjoy the lightning fast interrupt responses owing to the NVIC. In many MCUs’ interrupt system, interrupt priority can be set and Reset has the highest interrupt priority over anything else. The same things go for STM32s too. However at present I’m not going to go that deep as that’s not needed for now. In some upcoming post may be I’ll discuss the NVIC in details. As per STM32’s reference manuals for more information on exceptions and NVIC programming read Chapter 5 Exceptions and Chapter 8 Nested Vectored Interrupt Controller of the ARM Cortex-M3 Technical Reference Manual. There are other interrupts that are related to RTC, timer, etc. We won’t also look into them in this post. We will learn about them when we learn about the related hardware with them.
NXP LPC810 ARM Cortex M0+ is a 32-bit ARM MCU that could run at 30MHz and has 6 general purpose IO, 4K flash, 1K SRAM, 2 Timers, SPI, I2C and UART. The Catweazle Mini is a Trinket-type embedded development board for NXP LPC810 ARM Cortex M0+. The built in bootloader enables flash programming with a simple serial FTDI cable.
Catweazle Mini: A Trinket type embedded board for NXP LPC810 ARM Cortex M0+