This Freedom board is based on the KL03Z32VFK4 which is a 48MHz device from the ultra-low-power KL family with Cortex-M0+ core. This KL03 device has 32k Flash and 2k SRAM and is in a 24 pin QFN package, whereby the KL03 is also available in 16 pin QFN and 20 pin WLCSP and its memory ranges from 8k .. 32k Flash with 2k SRAM. There is a 32.768kHz crystal on the board for clocking the part.

Full details and documentation for this board can be obtained from the NXP web site: FRDM-KL03Z

To configure the µTasker project for this board simply enable the define FRDM_KL03Z in the project's config.h file. The compiler needs to be set to build for Cortex m0+ (and not Cortex M4) and the linker script KL_32_2.ld should be selected [KL_32_2_BM.ld for downloadable version] {the linker script extension may vary for different compilers, whereby *.ld is valid for GCC}

FRDM-KL03Z Binaries

Here are some binary files that can be loaded to the board. These were built using the µTasker applications (serial loader and V1.4 application) and can be simply generated using the supported compilers/IDEs [these were built using GCC], built using different configuration options or modified to suit specific requirements or hardware derived from this board :

  • uTaskerSerialBoot_FRDM-KL03Z_SREC.bin UART loader allowing applications to be loaded at link address 0x2800 - 19200 Baud. The baud rate is limited by the fact that the LPUART0_RX line has a 100nF capacitor and higher speeds become unreliable without removing this.
    When operating, the green LED blinks at 5Hz. To force the loader reset the board with the push button SW3 held down.
    To disable the watchdog reset the board with the push button SW2 held down.
    This can be loaded using the FRDM-KL03Z's USB-MSD (OpenSDA) boot loader. Note that the application size is limited to 22k. [7.4k]
    The KL03 contains a ROM based boot loader which will probably be used in most instances - this binary is more intended to show the compatibilty of the µTasker serial loader across all parts rather than be a replacement for the inbuilt one.
  • uTaskerV1.4.8_BM_FRDM_KL03Z_RF_2800.srec KL03 application with command-line menu on the virtual COM connection (19200 Baud). Low power modes can be set in the application menu and the processor runs at 48MHz from the 48MHz HIRC clock. The RTC is clocked by the 32.768kHz crystal.
    The application also supports the Nordic Semiconductor 2.4GHz wireless transceiver nRF24L01+ as either master (primary Tx) or slave to another device - having no such module connected will not disturb the other operation. When the transceiver is connected it is initialised on channel 15 at 1Mb/s with auto-ack enabled. Then messages are sent out once every 5s so that they can be received by other devices on the channel with the same configuration and echoed responses are displayed on the UART (OpenSDA virtual COM). As slave it will display receptions on its UART output and echoes modified data back to the master. [57.2k srec / 20.8k binary]

    Use together with another FRDM-KL03Z as master/slave pair or any other of the Kinetis boards with a binary available for this configuration.

    To build for this configuration the nRF24L01P+ interface is enabled by the define nRF24L01_INTERFACE in config.h.

    Wiring Details:
    nRF24L01P_CS - PORTA_BIT5 - J2-3
    nRF24L01P_TX_ENABLE - PORTB_BIT4 - J2-9
    nRF24L01P_DOUT - PORTA_BIT6 - J2-5
    nRF24L01P_SCLK - PORTB_BIT0 - J2-6
    nRF24L01P_DIN - PORTA_BIT7 - J2-4
    nRF24L01P_IRQ - PORTB_BIT3 - J2-10

    The default mode is master (primary Tx). To set slave mode connect the input PTB6 (J1-4) to GND at reset.

    Linked to 0x2800, this software can be loaded using a terminal emulator - 19200 Baud. When the application is running the green LED blinks at 2.5Hz.
  • uTaskerV1.4.8_FRDM_KL03Z_RF.bin The same KL03 application as stand-alone software that can be loaded using the FRDM-KL03Z's USB-MSD (OpenSDA) boot loader [21.6k].


This application shows the FRDM-KL03Z driving a 2 x 16 character LCD in 4-bit mode, connected on the following ports:

  • LCD 4-bit data bus - PTA9, PTA8, PTA7 and PTA6
  • LCD RS control - PTB0
  • LCD_WR - PTB5
  • LCD_EN - PTB6
  • LCD_Backlight - PTB7

To add the LCD operation the define SUPPORT_LCD is enabled with the options #define LCD_LINES 2 and #define LCD_CHARACTERS 16, whereby a range of 1 x 8 to 4 x 40 is supported. The simulation of this configuration is shown in the screen shot below and an executable is provided - this requires no installation and can be started by extracting and simply executing the file uTaskerV1.4.8_FRDM-KL03Z_LCD.exe. It is worth noting that the simulator adapts itself to the chosen display and optionally supports Cyrillic fonts. For more information about using a character LCD see the LCD User's Guide.

FRDM-KL03Z Storage System Demonstration

This application shows the FRDM-KL03Z and its internal Flash operation. It has a parameter system located at 0x7000 and its swap block at 0x7400, which stores system parameters (such as default I/O states and UART settings). Storage system commands can be used to read, write and erase flash areas that are otherwise not use (for example 0x5000..0x6fff can be experimented with). The following video discusses the storage system and its available commands:

The UART is configured to 115'200 Baud and can be used to access the command line shell.

Return to the Kinetis landing page

µTasker FRDM-KL03Z support. Copyright (c) 2004..2018 M.J.Butcher Consulting