Engineers might jump at the chance to buy an ARM-based
microcontroller module for under $10. But they should be aware that the cost
savings might not overcome the difficulties they'll face in obtaining good
documentation to put the microcontroller module to good use.
My lab work with the STM32 Value Line
Discovery board started well and I looked forward to working with the
TM32F100RBT6B Value Line MCU that includes 128 Kbytes of Flash memory, timers,
analog peripherals, digital I/O ports and serial interfaces. The board required
no USB driver installation and its demo program started right away. Pressing a
button changed the Flash rate for an LED that showed the test code worked.
Working on this board, engineers can use software tools from IAR
Systems, Atollic or Keil (a subsidiary of ARM). I obtained a 30-day trial version
of the Atollic TrueSTUDIO/STM32 Pro software and followed instructions in
Atollic's helpful "Installation Guide" and detailed "Quickstart
Guide for STM32." The latter document includes steps to create a new
project, set equipment and software parameters, build the code and run the
program on the Discovery board. That process went smoothly and I liked working
with the Eclipse-based Atollic tools and recommend them. (There's some
confusion about instructions for the debug connection. Use the free 30-day
licensed Pro version of Atollic's tools and you can avoid any confusion until
Atollic updates its manuals.)
After experimenting with the Atollic code example that controlled
two LEDs with a push-button, I modified the code to change the LED pattern. Then
I wanted to access a general-purpose I/O port to create some 8-bit patterns and
record them on a logic analyzer. That's when problems began.
STM provides a library of functions that control peripherals - everything
from analog-to-digital converters to watch-dog timers. Although STM provides 12
example programs (Application Note AN3268), the documents for the STM32 MCUs
lack comprehensive information about individual library functions, how they
work and how to use them. I spent hours going through many .h and .c files for
information about how to set up an 8-bit output port and found nothing basic
enough to describe how to do it for someone unfamiliar with the STM library.
Keep in mind that the peripherals on an STM32 MCU require many
setup steps that include programming registers and initializing clocks. So, I
expected a bit of tutorial information or even some step-by-step instructions
that explained how to use I/O ports. I posted a comment about the lack of
manuals on the STM Forum for the Discovery board and received several comments.
One person referred me to the ARM MCU data sheet, which didn't help. Someone
else suggested reading the compiled help file: stm32F10x_stdperiph_lib_um.chm.
After I figured out how to open it I found information such as:
DBGAFR_SWJCFG_MASK†††((uint32_t)0xF0FFFFFF) Definition at line 67 of file stm32f10x_gpio.c. Referenced by GPIO_PinRemapConfig()
A sample I/O program, GPIO_IOToggle, from STM seemed just as
cryptic. Other comments on the STM Forum pages noted similar frustrations with
the lack of helpful information about how to use the C libraries. As far as I
can determine, STM offers no documents comparable to those supplied for earlier
versions of the code library. People should download "UM0919 User Manual:
STM32VLDISCOVERY," which provides useful information about jumpers,
component locations, indicators, intentional solder bridges, and the pinouts
and functions of the board's pins. Unfortunately, STM's other documents don't
meet the standard of this helpful document.