What's New in Astrobe for Cortex M3

Version 7.0.1 2006-2019 CFB Software
Last Updated 24 Apr 2019 

E-Mail:   info@cfbsoftware.com
Website:   http://www.astrobe.com

This version is supported on Windows 10. The Installation and Uninstall executables are digitally signed to validate authenticity and integrity.

A summary of new features introduced in Astrobe for Cortex-M3 since version 6.4.0:

User-customisable Tools Menu

You can now add up to ten new menu commands of your own choice to the Astrobe Tools Menu. These can be used to launch a Windows application, a command-line console application or a DOS command.

You can include the following context-sensitive parameters in the commands:


They are substituted with values corresponding to the file currently showing in the editor.

You can also use the parameter


as the working folder or parameter for the command. The name of the folder where the Astrobe configuration files, library modules and examples are located is substituted when the command is executed. This is the folder which you specified when you installed Astrobe e.g.


You can create new menu items by editing a Tools.ini text file which is located with the configuration files in the Astrobe Configs folder. The ini file supplied with Astrobe includes three commands:

Open Containing Folder ...
Open Examples Folder ...
View Map File

These commands perform the following functions:

Cortex-M3 Oberon Language Extensions and Features

Bitfield Operators - BFI and BFX:

The bitfield extract and insert procedures BFX and BFI are predefined procedures which generate efficient inline code for common shift and mask operations. They are replacements for SYSTEM.UBFX and SYSTEM.BFI. For example:

SYSTEM.UBFX(bitfield, word, msb, lsb);
SYSTEM.BFI(word, msb, lsb, bitfield);

should now be written as:

bitfield := BFX(word, msb, lsb);
BFI(word, msb, lsb, bitfield);

Oberon Language Features

The latest version of the Oberon Language Report is dated May 2016. A copy of the report is included in the Astrobe distribution.

Imported Items:

The internal format of symbol files has been changed to remove some of the restrictions on imported items:

Language Rules:

The following language rules are now verified:

SYSTEM.VAL can be used to typecast REALs to INTEGERs.
INTEGERs and BYTEs are already assignment compatible with each other so ORD is not required.
SET items can be typecast to INTEGER using ORD before shifting and typecast back to SET using BITS after shifting.


The following are implementation restrictions:

Pointer types declared in an external module can only be extended in a client module if they point to a named record.
Pointers to anonymous records cannot reference themselves.

Anonymous records should be declared as named types instead to avoid these problems and ensure compatibility with Project Oberon.
For example, if B imports A, and C imports both A and B, then A must appear before B in C's IMPORT list. If it does not, the error is detected and reported with a compiler error message.

Configuration Options

Library Pathnames

Library Pathnames are used by Astrobe to search for dependent module files when compiling, building and linking applications. The number of these pathnames that you can define for each application has been increased from five to ten.

The foldername parameter %AstrobeM3% has replaced the parameter %astrobe% to allow for several different versions of Astrobe to co-exist on a single PC. It is substituted with the name of the folder where the Astrobe configuration files, library modules and examples are located. This is the folder which you specified when you installed Astrobe for Cortex-M3 e.g.


Auto Reset

A new Auto Reset checkbox appears when UART0 is selected for the Upload Type configuration option. The checkbox controls whether or not the MCU is automatically reset whenever an upload to the device via the UART is completed. The default value is On which is consistent with the behaviour of previous versions of Astrobe. Clear this checkbox if you prefer to manually reset the MCU with the Astrobe Terminal Reset button.

Library Modules - General


The error codes used in ASSERT statements in the library modules have been rationalised and are now referenced by named constants. These are defined in the Error library module e.g. Error.timeout. Each error code is associated with an error message that is displayed when the assertion is handled by the Traps module.


The common modules HCDrive, HCDir and HCFiles used by HCFiler, the SDHC Filesystem, are now included with the  library modules for the supported microcontrollers.


An ASSERT statement with a code in the range 200 .. 255 can now be assigned a user-defined trap handler. A new example, UserTraps, shows how it can be used.


The new Bits module can be used to perform bitwise operations on INTEGERs.


The size of the array Reserved which is declared in LinkOptions for use with NXP IAP functions has been reduced to 32 bytes because the remainder is allocated from the stack.

An identical implementation of the LinkOptions module is now common to all Cortex-M3 MCUs to simplify the linking process. The declaration can be commented out or removed if you do not use the NXP IAP functions.

Library Modules - STM32


I2C is now supported.


The GPIO module has been modified to be compatible with the Astrobe for Cortex-M4 version. The library modules Serial, SPI and ST7735 have been updated to use the new GPIO interface.


The length parameter is no longer required on the SPI Send and Receive functions for STM32 targets. The number of bytes transferred by these functions will correspond to the size in bytes of the variable that is passed as a parameter.   


The Main and MCU modules all configure the HSE oscillator, PLL, AHB and APB clocks in a similar way to the corresponding STM32 modules in Astrobe for Cortex-M4 and Cortex-M7.

Development Boards

Astrobe now includes a configuration file, library modules and examples for the STM32F207ZG microcontroller with 1024 KB of flash memory and 128 KB of RAM. The NUCLEO-F207ZG, an STM32 Nucleo-144 board from STMicroelectronics which features this microcontroller, has been added to our list of supported boards.

Source Code Examples

Subscribe to the Cortex-M3 Source code examples of the Astrobe forum to receive notification of the availability of new source code examples.

Problems fixed